プロキシホストに送信されるHTTP基本認証情報も含むnginx proxy_passディレクティブを設定するにはどうすればよいですか?
これは、プロキシする必要があるURLの例です。
http://username:[email protected]/export?uuid=1234567890
最終目標は、プロキシサーバーのURIを公開せずに、1つのサーバーが別のサーバー(プロキシの対象となるサーバー)からのファイルを表示できるようにすることです。ここで見つかったNginx設定に従うことで、これは90%正しく動作しています。
http://kovyrin.net/2010/07/24/nginx-fu-x-accel-redirect-remote/
プロキシサーバーに送信するには、HTTP基本認証を追加するだけです
これをalvosuの回答で機能させましたが、base64文字列の引用符の中に「Basic」という単語を入力する必要があったので、次のようになります。
proxy_set_header Authorization "Basic dGVzdHN0cmluZw==";
私はこれについて少し前に書きました。詳細はこちら:
http://shairosenfeld.blogspot.com/2011/03/authorization-header-in-nginx-for.html
例えば:
location / {
proxy_set_header Host $Host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://6.6.6.6:80;
proxy_set_header Authorization "Basic a2luZzppc25ha2Vk";
}
「a2luZzppc25ha2Vk」は「king:isnaked」base64でエンコードされているため、
http:// king:[email protected]
詳細については、ブログの投稿をご覧ください。
Proxy_set_header Authorization "USER_AND_PASS"を設定します。ここで、USER_AND_PASS = base64(user:pass)
Nginxからproxy_set_header Authorization "";
で転送されて渡される認証ヘッダーを削除します。
基本的な認証を行うようにnginxを設定しましたが、Authorization
ヘッダーがproxy_pass
ディレクティブで渡されていて、受信側がトークンを処理できませんでした。
# Basic Auth
auth_basic "Private Stuff";
auth_basic_user_file /etc/nginx/.htpasswd;
location /server {
proxy_pass http://172.31.31.140:9090;
proxy_set_header Authorization "";
}
(私のケースに固有、このエラーはReason: No AuthenticationProvider found for org.springframework.security.authentication.UsernamePasswordAuthenticationToken
で返されました)