我有一个nginx反向代理服务器,与apache后端进入清漆caching。
这个php作为一个从apache开始的fastcgi进程运行。
我试图让一些PHP软件工作,但基本的HTTP身份validation对话框不接受任何用户名或密码。 我做了一些挖掘,并想出了这个.htaccess文件:
RewriteEngine On RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]
这已经解决了基本HTTPauthentication的authentication问题。
现在我一直在试图弄清楚到底做了什么,所以我的问题是:为什么添加这个重写规则使authentication开始工作?
我现在所能想到的就是在nginx – > varnish – > apache链的某个地方,apache没有收到auth头文件。 我想了解这里发生了什么事情,所以我可以在服务器级别实施更改,以防止其他地方发生。
有人可以澄清?
谢谢
放松HTTPauthentication跟踪似乎不是nginx或Varnish的问题。
这个重写规则不是为了使Apache可以访问authentication头字段,而是为了Fast-CGI后端(假设authentication应该在PHP中被识别)。
身份validation标头通常隐藏在Fast-CGI中。 您可以
用这个RewriteRule hack手动设置REMOTE_USER环境variables;
或者将mod_fastcgi configurationvariables传递给Fast-CGI:
FastCgiServer:
[…]
-pass-header header (none)在请求环境中传递的HTTP请求标头的名称。 这个选项使通常不可用的标题(例如授权)的内容可用于CGI环境
[…]