原文链接:http://blog.itpub.net/23071790/viewspace-706143
一.应用场景
1. 当前有4台服务器,一台(A)对外网开发,另外3台(B、C、D)作为应用服务器
2. 服务器A,对外网开放,并映射了3个域名,分别为:www.b.com,www.c.com,www.d.com, 但是3个应用服务器都在内网,现在想通过访问这3个不同的域名来分别访问3台不同的应用服务器。
二.实现方案
安装apache http服务器,使用apache服务器的反向代理,分别建立3个虚拟主机,来实现对3台应用服务器的映射。
三. 具体步骤
1. 修改conf/http.conf,将以下注释行释放,加载相应的http代理模块。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
2. 修改conf/http.conf
NameVirtualHost *:80
将此行修改为与http服务器对应的端口号,具体端口号配置在Listen 80配置,可增加为多个。
3. 修改conf/http.conf
<VirtualHost *:80>
ServerName www.b.com
ProxyPass / http://192.168.1.111/
ProxyPassReverse / http://192.168.1.111/
</VirtualHost>
<VirtualHost *:80>
ServerName www.c.com
ProxyPass / http://192.168.1.112/
ProxyPassReverse / http://192.168.1.112/
</VirtualHost>
<VirtualHost *:80>
ServerName www.d.com
ProxyPass / http://192.168.1.113/
ProxyPassReverse / http://192.168.1.113/
</VirtualHost>
这里的ServerName与域名相对应,这3个域名都被映射到了同一台代理服务器,当通过这3个不同的域名访问时,请求被http服务器接受,分别转发到与域名相对应的虚拟主机上
4. 修改安全配置,如果出现以下错误
[Fri Dec 21 23:34:05 2007] [error] ap_proxy_connect_backend disabling worker for (192.168.1.111)
[Fri Dec 21 23:34:05 2007] [error] (13)Permission denied: proxy: HTTP: attempt to connect to 192.168.1.111
这是由于开启了selinux的原因,通过执行以下命令就可解决:
setsebool -P httpd_can_network_connect=1
或者关闭selinux
四.测试配置结果
在浏览器中分别输入3个域名,这些请求将被分别转发到3太不同的应用服务器,具体配置错误可见logs/error.log
--------------------补充-----------------------------------
找到文件apache/conf/httpd.conf
开启反向代理支持
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
添加反向代理配置
ProxyPass /urcweb/ http://10.10.10.89:8080/urcweb/
ProxyPassReverse /urcweb/ http://10.10.10.89:8080/urcweb/
--------------------------------------------------------