HTTP認証を使用するApacheサーバーへのリバースプロキシとしてNginxを使用しています。何らかの理由で、ApacheにHTTP_AUTHORIZATIONヘッダーを取得できません。Nginxによって除外されているようです。したがって、要求は認証できません。
基本認証は動的であるため、nginx構成でハードコーディングしたくないことに注意してください。
私のnginx設定は:
server {
listen 80;
server_name example.co.uk ;
access_log /var/log/nginx/access.cdk-dev.tangentlabs.co.uk.log;
gzip on;
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_read_timeout 120;
location / {
proxy_pass http://localhost:81/;
}
location ~* \.(jpg|png|gif|jpeg|js|css|mp3|wav|swf|mov|doc|xls|ppt|docx|pptx|xlsx|swf)$ {
if (!-f $request_filename) {
break;
proxy_pass http://localhost:81;
}
root /var/www/example;
}
}
なぜこれが起こっているのか誰でも知っていますか?
Update-問題は元の質問で見落としていたものであることが判明しました:mod_wsgi。ここで問題になっているサイトはDjangoサイトであり、Apacheはauth変数を通過させますが、mod_wsgiはそれらを除外します。
解決策は次のとおりです。
WSGIPassAuthorization On
詳細は http://www.arnebrodowski.de/blog/508-Django,-mod_wsgi-and-HTTP-Authentication.html を参照してください
これが機能するかどうかはわかりませんが、これを追加してみてください:
proxy_pass_request_headers on;
proxy_no_cache $cookie_nocache $arg_nocache$arg_comment;
proxy_no_cache $http_pragma $http_authorization;
proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;
proxy_cache_bypass $http_pragma $http_authorization;
それでもうまくいかない場合は、これも試してください。
proxy_set_header HTTP_AUTHORIZATION $http_authorization;