[英]Is there a way to remove apaches Reverse Proxy Request Headers?
当充当反向代理时,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取消它们。 我可以添加更多条目,但我无法删除它们。
有任何想法吗?
纠正的答案:自硬编码以来没有办法做到这一点
要在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
进行编译
自Apache 2以来,正如这个漂亮的答案所说的那样
ProxyAddHeaders Off
理论上禁用它。 根据我的经验,它没有任何效果。 但是,加上
<Proxy *>
ProxyAddHeaders Off
</Proxy>
与
RequestHeader unset X-Forwarded-Host
RequestHeader unset X-Forwarded-For
RequestHeader unset X-Forwarded-Server
它开始工作的某个地方。
我在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; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.