我有一个包含常见配置项的VirtualHost块,一个指令是ProxyPreserveHost。
我可以“程序性地”关闭Rewrite指令的ProxyPreserveHost,然后将include重新打开吗?例如:
<VirtualHost *:80>
ServerName www.blah.com
...
...
ProxyPreserveHost off
RewriteRule /somepath http://otherhost/otherpath [P]
Include /path/to/file/turning-on-ProxyPreserveHost
</VirtualHost>
其他主机位于CDN上并保留主机正在创建一些名称解析问题,该问题不允许在主机名称空间中代理内容。
ProxyReserveHost仅允许在Server Config或VirtualHost中使用。看起来我不能为ProxyPass和ProxyPassReverse指令选择性地关闭它(封装在mod_rewrite的代理标志中)。
答案 0 :(得分:0)
在互联网上发现的以下内容解决了我的困境。另外,还有一个开放的功能请求,可以在Apache HTTPD项目的位置和目录级别配置ProxyPreserveHost
。
<IfModule mod_headers.c> <Proxy "http://${build.replace.host}/"> RequestHeader set Host ${build.replace.external.host} </Proxy> RewriteRule ^/proxypath/ http://${build.replace.external.host}/path/to/resource.html [P] ProxyPassReverse /proxypath/ http://${build.replace.external.host}/path/to/resource.html </IfModule>