mod_rewrite 代理返回 ip 地址而不是主机名

mod_rewrite 代理返回 ip 地址而不是主机名

我有以下设置:

<Proxy balancer://clusterX>
  BalancerMember http://app.server:1234 
</Proxy>
<Proxy balancer://clusterY>
  BalancerMember http://app.server.2:1234
</Proxy>
RewriteEngine On
RewriteCond %{REMOTE_ADDR} 1$|2$|3$|4$|0$
RewriteRule ^/something-here(.*)$ balancer://clusterX/something-here$1 [P,L]

在这种情况下,当请求来自 1、2、3 或 4 上的 IP 地址时,mod_rewrite 会将其发送到 clusterX。但是,如果我通过浏览器更改请求中的某些内容,它会直接将我发送到 appp.server:1234(在我的情况下,这是 IP 地址),而不是我访问两个集群的原始主机名。

知道原因吗?

答案1

我自己找到了答案。

基本上,mod_rewrite将请求转发到应用服务器,但是当应用服务器返回数据时,没有模块来处理HTTP标头中url的重写。

为了使其工作,请添加以下内容:

ProxyPassReverse /something-here 平衡器://clusterX/something-here

相关内容