在日常问题处理中,会遇到用户可能同时需要tomcat\apache\iis,但是访问站点又不想加端口来区分(比如iis监听80、apache监听88、tomcat监听8080情况下希望通过所有站点都通过80端口访问到)

这种情况考虑使用apache反向代理其他web服务的站点,apache监听80端口,其他web服务监听非80端口即可。

这里我配置tomcat使用AJP代理,IIS使用http代理,所以把apache配置文件httpd.conf中mod_proxy.so 、mod_proxy_http.so、mod_proxy_ajp.so前的注释去掉,如果是使用http方式,则去掉mod_proxy.so、mod_proxy_http.so前的注释即可。

QQ20160812155004.jpg

IIS和tomcat上分别添加两个测试站点,本问中IIS使用88端口、tomcat配置的站点http端口为8090,AJP端口为8010.如下图所示:

QQ20160812155228.jpg

QQ20160812155349.jpg

apache上增加虚拟主机:参考文章:http://docs.landui.com/?p=321   http://docs.landui.com/?p=118

本文中增加的配置文件如下:

注意:因为我http端口88上有不同主机头的虚拟主机,所以需要增加 ProxyPreserveHost On配置,以便在发送请求给IIS时候带上主机头,IIS才能响应对应站点内容。 


<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot “D:/wwwroot/tomcat”
#static和template为静态资源,直接通过apache请求
ProxyPass /static !
ProxyPass /template !
ProxyPass / ajp://127.0.0.1:8010/
ProxyPassReverse / ajp://127.0.0.1:8010/
ServerName tomcat.antisec.cn
ServerAlias tomcat.antisec.cn
ErrorLog “logs/tomcat.antisec.cn-error.log”
CustomLog “logs/tomcat.antisec.cn-access.log” common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot “D:/wwwroot/tomcat2”
ProxyPass /static !
ProxyPass /template !
ProxyPass / ajp://127.0.0.1:8010/
ProxyPassReverse / ajp://127.0.0.1:8010/
ServerName tomcat2.antisec.cn
ServerAlias tomcat2.antisec.cn
ErrorLog “logs/tomcat2.antisec.cn-error.log”
CustomLog “logs/tomcat2.antisec.cn-access.log” common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot “C:/inetpub/wwwroot/iis1”
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:88/
ProxyPassReverse / http://127.0.0.1:88/
ServerName iis1.antisec.cn
ErrorLog “logs/iis1.antisec.cn-error.log”
CustomLog “logs/iis1.antisec.cn-access.log” common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot “C:/inetpub/wwwroot/iis2”
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:88/
ProxyPassReverse / http://127.0.0.1:88/
ServerName iis2.antisec.cn
ErrorLog “logs/iis2.antisec.cn-error.log”
CustomLog “logs/iis2.antisec.cn-access.log” common
</VirtualHost>

访问测试截图如下,可以看到tomcat和IIS的站点都分别分发到了对应的web服务进行处理。

QQ20160812154521.jpg

QQ20160812154532.jpg

20160812160245.jpg

20160812160308.jpg