nginx,apache httpauthentication

我有一个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跟踪似乎不是nginxVarnish的问题。

这个重写规则不是为了使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环境

[…]