现在的位置: 首页 > 综合 > 正文

apache 反向代理的ProxyPreserveHost 配置

2013年08月19日 ⁄ 综合 ⁄ 共 1350字 ⁄ 字号 评论关闭
    前面有一章讲到了用apache2.2.4的反向代理功能实现负载均衡,运行起来很正常。不过最近发现一个问题,那就是url地址结尾是目录,让apache自动加上斜杠而引发的问题。
    在不使用proxy功能时,对apache的目录配置 DirectoryIndex index.shtml ,则会自动对目录的访问补起斜杠。如:访问http://www.test.com/dir 时,如果dir为实际文件系统中的目录,apache会自动加上斜杠从而变成访问 http://www.test.com/dir/ ,也就是访问dir目录下的默认index文件 index.shtml。
    而配置上proxy之后,apache变得不能自动不起斜杠了。即便是手工加上了RewriteRule ^/([^/.+]|[^/])$ /$1/  [R] 也不行,着实郁闷了一番。
    经过google以及不断的更改配置,实验,发现这样一个配置: ProxyPreserveHost On 。 默认情况下它的值为Off,没有仔细研究这个参数背后的深层含意,大概意思就是反向代理转发所有主机(难道在重定向之后代理的请求变化了,使得proxy不能识别是否是从同一台主机reserver来的?)。
    在ProxyPass规则最下面加上这个配置之后,问题解决。截选配置如下:
<Proxy balancer://proxy>
        BalancerMember http://192.168.10.11:8083 loadfactor=1
        BalancerMember http://192.168.10.12 loadfactor=1
</Proxy>
NameVirtualHost *:80
<VirtualHost *:80>
        ServerAdmin webmaster@12582.com
        ServerName www.12582.com
        DocumentRoot /www
        DirectoryIndex index.shtml
        <Directory /www>
                AllowOverride All
                AddType text/html .shtml
                AddType application/x-rar .rar
                AddHandler server-parsed .shtml
                Options +IncludesNOEXEC
                SSIErrorMsg "<!-- Error -->"
                Deny from 222.128.6.82
        </Directory>
RewriteEngine on
ProxyPass /TLimages/ !
ProxyPass /imagelist/ !
ProxyPass /xiazai/ !
ProxyPass /ad/ !
ProxyPass / balancer://proxy/
ProxyPassReverse / balancer://proxy/
ProxyPreserveHost on
</VirtualHost>

抱歉!评论已关闭.