本文共 2685 字,大约阅读时间需要 8 分钟。
在把这篇总结写下来之前,我想说几句话: 工作和爱好千万别混在一起,心焦力瘁啊!为了完成一个看似以前很简单并且也有过成功经验的任务,我干到现在。本来以为挺简单的事情,加上那不争气的Promise MB Fasttrak133 的RAID驱动真的让我领略到了Windows服务器平台的魅力:一个字:真TMD烂!服务器安装的时候就有着各种困难,好容易弄好了,却在配置中出现了麻烦,当然不是指简单的对系统和网站的配置,而是针对它的转发配置。 说正题! 结构如此: |
资料:
1、Linux1 为主服务器,Win1为本次配置的服务器,Linux2、Linux3为本次顺手配置的服务器;
2、两个Domain: 、;
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;
本次重点是 这个Domain在WIN服务器中,使其能够在单一外网IP下通过Linux1的Apache反向代理转发。
按照道理说,以我以前做的httpd的Proxy或者是Rewrite都是没有问题的,比如:
<VirtualHost 192.168.1.6:80>ServerAdmin mail@fatsohomeServerName mail.fatso.cnErrorLog logs/mail-error_logCustomLog logs/mail-access_log commonrewriteengine onproxyrequests offusecanonicalname offrewriterule ^/(.*)$ [P,L]</VirtualHost> 具体内容请参考我以前的文章: 但是这一次却出现了问题,打电话问师兄,师兄帮我分析了很多情况以后也没能解决,关键是我们以前都是只选择使用Linux服务器,基本用不着Win平台的服务器,所以这一次显然要搞出问题所在。
在测试和分析中,师兄所讲的使用下面的方式做反向是没问题的:
<VirtualHost>
ServerName
RewriteEngine On
ProxyPass /
...
</virtualHost>
但是后来我发现,我们都忽略了一点:我们都处在自己的内网,无论是服务器还是Client都是会先被服务器返回内网的地址运行!这就让我们走入了误区,呵呵。
当中反复测试了下面的方式,基本上包括了Proxy方式和Rewrite方式:
上面这些都自动专到了Linux1的主Domain: ,于是改用Proxy形式:
ProxyPass /${request_uri}
ProxyPass ^/$
但是失败告终,页面显示的是403受限访问信息,在无奈之下察看了这个虚拟主机的错误信息,也就是下面这行所表示的内容:
ErrorLog logs/site_b-error_log
CustomLog 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: 这是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在虚拟主机部分的设置还是有问题的,更改:
ProxyPass / ProxyPassReverse / 重新启动Apache,成功~~~ :D 但是如此设置Proxy就会成为全局透明代理了,显然并不符合我们的需要,所以在虚拟主机设置中单独增加了设置条目,详细内容为:
<proxy> Order deny,allow Allow from 192.168.100</proxy> 最后顺手设置了其他两台Linux服务器,并按照此设置类进行,也都成功运行。
现在给出在这次设置中,改动的文件:
/etc/hosts增加 的本地设置:192.168.100.5 192.168.100.5 b.cn httpd.conf启动模块:LoadModule rewrite_module modules/mod_rewrite.soLoadModule proxy_module modules/mod_proxy.so更改Proxy 设置,如上代码显示;增加虚拟主机设置:<VirtualHost 192.168.100.5:80>ServerAlias b.cnServerAdmin mail@fatsohomeServerName ErrorLog logs/site_b-error_logCustomLog logs/site_b-access_log commonRewriteEngine On<proxy> Order deny,allow Allow from all</proxy>ProxyPass / ProxyPassReverse / </VirtualHost> 参考文献: 1. Apache 2.0中文手册 2. Google 3. 我原来的技术Blog: 4. 师兄的Blog: 5. 猪侠山庄Blog: 6. NetSeek's Blog : 转载地址:http://deoci.baihongyu.com/