您的位置:首页 > 运维架构 > 反向代理

apache 反向代理的ProxyPreserveHost 配置

2008-11-28 17:19 495 查看
前面有一章讲到了用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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: