我可以关闭Apache Directive然后在include中打开它吗?

时间:2010-03-11 19:06:57

标签: apache reverse-proxy apache-config

我有一个包含常见配置项的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的代理标志中)。

1 个答案:

答案 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>