如果针对HTTP Header进行检查,则apache setenvif不会设置env变量

时间:2011-12-05 12:59:38

标签: apache2 environment-variables

来自http://httpd.apache.org/docs/current/mod/mod_headers.html

“当且仅当请求中存在标头MyRequestHeader时,才有条件地在响应上发送MyHeader。这对于构建标头以响应某些客户端激励非常有用。请注意,此示例需要mod_setenvif模块的服务。”

 SetEnvIf MyRequestHeader myvalue ENV_SET
 Header set MyHeader "%D %t mytext" env=ENV_SET 

但是从Apache SetEnvIf trouble开始我的测试尝试通过检查授权标头设置环境变量,ENV_SET将不会被设置

SetEnvIf仅为以下设置env变量ENV_SET     * 远程主机     * Remote_Addr     * Server_Addr     * Request_Method     * Request_Protocol     * Request_URI

文档是错误的还是我误解了什么?

使用:Apache / 2.2.15(Win32)mod_fastcgi / 2.4.6 mod_jk / 1.2.30

1 个答案:

答案 0 :(得分:2)

格式为:

SetEnvIf <headername> <regex> <environment variable name and optionally a value>

这对我有用:

SetEnvIf ACTUAL_CLIENT_IP "^172\.111\.0\.27" dontlog

其中ACTUAL_CLIENT_IP是存储实际客户端IP的HTTP标头的名称(与使用我们的代理服务器的IP覆盖的Remote_Addr字段相反)。