【问题标题】:apache setenvif doesn't set env variable if checked against HTTP Header如果检查 HTTP 标头,apache setenvif 不会设置环境变量
【发布时间】:2011-12-05 12:59:37
【问题描述】:

来自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 和我的测试尝试通过检查 Authorization 标头来设置环境变量,ENV_SET 根本不会设置

SetEnvIf 只为以下设置环境变量 ENV_SET * 远程主机 * 远程地址 * 服务器地址 * 请求方法 * 请求协议 * Request_URI

是文档有误还是我误解了什么?

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

【问题讨论】:

    标签: apache2 environment-variables


    【解决方案1】:

    格式为:

    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 字段)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-31
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 2019-12-03
      • 2016-09-30
      相关资源
      最近更新 更多