由于一些历史原因,开发的系统可能有Java的,也有.Net的,或者PHP的。如果部署在一个服务器上,当都想使用80端口时,就会造成冲突。对于简单的各自使用一个端口的事情不在本文讨论范围内,这样是简单了,但用户体验却降低了。
下文将介绍如何将Apache、Tomcat、IIS整合共用80端口。
本文解决方案是使用虚拟主机方式来解决,即采用多个域名方式来解决。如果只有一个域名或直接使用IP,参考后续文章《Tomcat、IIS、JK整合共用80端口》。
[b]一、确认Tomcat、IIS正常运行[/b]
把Tomcat的端口设置为8080(当然可根据自己情况分配其他端口),把IIS的端口设置为8081,确认使用http://IP:8080和http://IP:8081能正常访问Web服务。
[b]二、准备好域名[/b]
至少准备2个域名,1个域名对应Tomcat,另外一个域名对应IIS。比如本站www.nowfox.com对应IIS,weibo.nowfox.com对应tomcat。把这两个域名的A记录都指向Web服务器的IP。
对于没有域名的想进行测试的,可修改hosts文件进行测试。
[b]三、安装配置Apache[/b]
本站采用的是2.2.22版本,安装完毕后,打开conf/httpd.conf文件,去掉以下两行代码前的注释符号#,这两行是为了启动代理。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
去掉Include conf/extra/httpd-vhosts.conf代码前的注释符号,即启用conf/extra/httpd-vhosts.conf文件,在conf/extra/httpd-vhosts.conf文件中,加入以下代码
<VirtualHost *:80>
ServerName www.nowfox.com
ProxyPass / http://127.0.0.1:8081/
ProxyPassReverse / http://127.0.0.1:8081/
</VirtualHost>
<VirtualHost *:80>
ServerName weibo.nowfox.com
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>
注意:在ProxyPass最后有“/”。
如果不在conf/extra/httpd-vhosts.conf中配置,想直接在conf/httpd.conf中配置,需要增加一行
NameVirtualHost *:80
表示根据Name来区分虚拟主机。
[b]四、重启、测试[/b]
重启Apache,输入对应的域名,不用再输入端口,即可访问IIS和Tomcat了。