当充当反向代理时,apache会添加x-forwarded标头,如此处所述。
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#x-headers
在我的配置中,我已将服务器A配置为转发代理。有这样的规则:
RewriteRule proxy:(.*example.com)/(.*) $1.mysecondserver.com/$2 [P]
此规则允许服务器从我的其他服务器请求资源。
在第二台服务器(原点)上,我有一个资源的虚拟主机容器和另一个重写规则,如下所示:
RewriteRule some-regex some-url [P]
这似乎没有意义,但是我遗漏了许多其他的东西,因为它不是问题的一部分。
但是最终请求包含以下标题:
[X-Forwarded-For] => ip of 1st server
[X-Forwarded-Host] => example.myseconserver.com
[X-Forwarded-Server] => example.com
我希望这些标题消失。
我似乎无法用mod_headers取消它们。我可以添加更多条目,但我无法删除它们
任何想法?
答案 0 :(得分:2)
更正后的答案:自硬编码
以来无法做到这一点在mod_proxy_http.c的源代码中修复此问题,搜索以下部分:
apr_table_mergen(r->headers_in, "X-Forwarded-Server",
r->server->server_hostname);
}
然后立即添加此代码:
// remove any X-Forwarded headers
apr_table_unset(r->headers_in, "X-Forwarded-For");
apr_table_unset(r->headers_in, "X-Forwarded-Host");
apr_table_unset(r->headers_in, "X-Forwarded-Server");
然后通过运行apxs2 -cia mod_proxy_http.c
答案 1 :(得分:1)
我在CentOS 5上的httpd 2.2上遇到了同样的问题。安装httpd 2.4是不可能的。但由于某些原因,我无法完全切换到nginx。所以我通过在httpd和目标地址之间插入nginx代理来实现它。所以我有:httpd(localhost:80/path
) - > nginx(localhost:81/path
) - > http://your.destination/path
。安装步骤如下:
在nginx中添加一个位置,删除那些httpd的反向代理请求标头。它看起来像这样:
location /path {
proxy_set_header x-forwarded-for "";
proxy_set_header x-forwarded-host "";
proxy_set_header x-forwarded-server "";
proxy_pass http://your.destination/path;
}
答案 2 :(得分:1)
自Apache 2以来,正如这个answer所说的那样,
IBindingList
理论上禁用它。根据我的经验,它没有任何效果。但是,结合
ProxyAddHeaders Off
和
<Proxy *>
ProxyAddHeaders Off
</Proxy>
某处它开始起作用了。