根据另一个请求头的值在 mod_proxy 上添加一个请求头

Gle*_*ven 2 mod-proxy requestheader apache-2.2

我有一台运行 mod_proxy 的服务器,我需要重命名请求标头。更接近原点的代理正在剥离 X-Forwarded-For 标头,但我们需要保留该数据,因此我想将该值添加到不同的标头以允许原点拾取它。

从我对 doco 的阅读来看,无法重命名标头,而且我看不到如何将值传递到 RequestHeader add in mod_headers 中。

Ser*_*sov 6

RequestHeader可以将环境变量的值插入到头值中,并且SetEnvIf可以根据请求头值设置环境变量,因此以下配置应该可以实现您的需求:

SetEnvIf X-Forwarded-For (.*) saved_x_forwarded_for=$1
RequestHeader set X-Custom-Forwarded-For "%{saved_x_forwarded_for}e"
Run Code Online (Sandbox Code Playgroud)

您应该使用set代替add,这样即使客户端发送包含您的自定义标头的请求,客户端指定的值也将被覆盖(尽管这也不是 100% 可靠,因为X-Forwarded-For标头也可能被欺骗)。还要测试如果X-Forwarded-For收到没有的请求会发生什么。