/ 中存储网

Linux系统使用Apache反向代理IIS网站

2013-12-03 09:22:01 来源:itjs.cn
   在把这篇总结写下来之前,我想说几句话: 工作和爱好千万别混在一起,心焦力瘁啊!为了完成一个看似以前很简单并且也有过成功经验的任务,我干到现在。本来以为挺简单的事情,加上那不争气的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_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: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.cn

192.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.cn

ErrorLog 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>