在把这篇总结写下来之前,我想说几句话: 工作和爱好千万别混在一起,心焦力瘁啊!为了完成一个看似以前很简单并且也有过成功经验的任务,我干到现在。本来以为挺简单的事情,加上那不争气的Promise
MB Fasttrak133
的RAID驱动真的让我领略到了Windows服务器平台的魅力:一个字:真TMD烂!服务器安装的时候就有着各种困难,好容易弄好了,却在配置中出现了麻烦,当然不是指简单的对系统和网站的配置,而是针对它的转发配置。
说正题! 结构如此: |
资料:
1、Linux1 为主服务器,Win1为本次配置的服务器,Linux2、Linux3为本次顺手配置的服务器;
2、两个Domain: www.a.com、www.b.cn;
3、防火墙为默认配置;地址:192.168.100.1
4、外网IP地址:222.222.222.222,内网资源分配:Linux1 : 192.168.100.2、Linux2: 192.168.100.3、Linux3: 192.168.100.4、Win1: 192.168.100.5;
5、之前所有Domain解析完毕,至222.222.222.222;
本次重点是www.b.cn 这个Domain在WIN服务器中,使其能够在单一外网IP下通过Linux1的Apache反向代理转发。
按照道理说,以我以前做的httpd的Proxy或者是Rewrite都是没有问题的,比如:
<VirtualHost 192.168.1.6:80>ServerAdmin [email protected]
ServerName mail.fatso.cn
ErrorLog logs/mail-error_log
CustomLog logs/mail-access_log common
rewriteengine on
proxyrequests off
usecanonicalname off
rewriterule ^/(.*)$ http://192.168.1.2/$1 [P,L]
</VirtualHost>
具体内容请参考我以前的文章:
http://fatso.blog.hexun.com/2290770_d.html但是这一次却出现了问题,打电话问师兄,师兄帮我分析了很多情况以后也没能解决,关键是我们以前都是只选择使用Linux服务器,基本用不着Win平台的服务器,所以这一次显然要搞出问题所在。
在测试和分析中,师兄所讲的使用下面的方式做反向是没问题的:
但是后来我发现,我们都忽略了一点:我们都处在自己的内网,无论是服务器还是Client都是会先被服务器返回内网的地址运行!这就让我们走入了误区,呵呵。
当中反复测试了下面的方式,基本上包括了Proxy方式和Rewrite方式:
上面这些都自动专到了Linux1的主Domain: www.a.com,于是改用Proxy形式:
但是失败告终,页面显示的是403受限访问信息,在无奈之下察看了这个虚拟主机的错误信息,也就是下面这行所表示的内容:
ErrorLog logs/site_b-error_logCustomLog logs/site_b-access_log common
发现在Error_log纪录中显示如此内容:
Sat Apr 26 11:08:42 2008 error client 221.1.13.192 client denied by server configuration: proxy:http://192.168.100.5/这是Proxy设置的问题,可Proxy的设置并没有错误:
<IfModule mod_proxy.c>ProxyRequests Off
<Proxy *>
Order deny,allow
Deny from all
Allow from .example.com
</Proxy>
</IfModule>
失望之余突然发现了 Allow From这条规则没有进行过改动……,失败!! 于是更改这条规则:
...Allow from 192.168.100
...
再次试验,成功访问,可是却出现了部分内容无法显示,看来Proxy在虚拟主机部分的设置还是有问题的,更改:
重新启动Apache,成功~~~ :D 但是如此设置Proxy就会成为全局透明代理了,显然并不符合我们的需要,所以在虚拟主机设置中单独增加了设置条目,详细内容为:
<proxy>Order deny,allow
Allow from 192.168.100
</proxy> 最后顺手设置了其他两台Linux服务器,并按照此设置类进行,也都成功运行。
现在给出在这次设置中,改动的文件:
/etc/hosts增加 www.b.cn 的本地设置:
192.168.100.5
www.b.cn192.168.100.5 b.cn
httpd.conf
启动模块:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
更改Proxy 设置,如上代码显示;
增加虚拟主机设置:
<VirtualHost 192.168.100.5:80>
ServerAlias b.cn
ServerAdmin [email protected]
ServerName
www.b.cnErrorLog logs/site_b-error_log
CustomLog logs/site_b-access_log common
RewriteEngine On
<proxy>
Order deny,allow
Allow from all
</proxy>
ProxyPass /
http://www.b.cn/ProxyPassReverse / http://www.b.cn/
</VirtualHost>
声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。