日期:2014-05-16  浏览次数:21459 次

Apache设置反向代理访问IIS
应用场景:
1)业务应用系统部署在内网服务器A的IIS容器中, 并且无法通过外网直接访问。
2)要实现外网访问内网, 必须先通过中立区的服务器B,然后通过服务器B才能访问A.

解决思路:
在中立区服务器B安装APACHE, 通过apache的方向代理设置, 当来自外网的请求到达apache服务器, 则通过反向代理访问服务器B中的应用, 并将响应按照请求转发。

设置方法如下:
Apache服务器跨两个网段,一个外网(192.168.0.177),一个内网(192.168.100.50),IIS服务器在内网(192.168.100.50)。外网要访问IIS服务器资源(Exchange和SharePoint)只能通过Apache Reverse Proxy来访问。下面是Apache的http.conf的配置

首先,由于方向代理中只能通过域名来访问转发的服务器,所以我们要通过机器的DNS来指向要到达的应用, 需要在Apache服务器的hosts文件(C:\WINDOWS\system32\drivers\etc)中加入192.168.100.50 v.xxx.com。

#把下面两行行首的注释去掉,打开mod_proxy和mod_proxy_http这两个模块,

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

#设置虚拟主机
NameVirtualHost 192.168.0.177

<VirtualHost 192.168.0.177>
    ServerName iis.aaa.com
    ErrorLog logs/iis.log
    CustomLog logs/iis.access.log common
    ProxyPass / http://v.xxx.com
    ProxyPassReverse / http://v.xxx.com/
</VirtualHost>

保存后重启apache服务器, 在外网的浏览器中访问 http://iis.aaa.com, 则可以看到效果。


1 楼 lxp1116 2011-11-04  
我想请问下,我安装你说的方式,已代理成功,但是出来个问题:页面上的图片、js、css之类的资源路径都不正确了,本来应该是v.xxx.com/image/XX.jpg、v.xxx.com/js这个样子的,但是代理后变成iis.aaa.com/image/XX.jpg、iis.aaa.com/js这样了。。。不知道应该怎样解决了。。。