在默认情况下,Apache服务器安装后使用的是80端口,而Tomcat默认使用的是8080端口,当一台服务器上二者都安装时,想要访问Tomcat提供的JSP页面,需要在域名后加上:8080,这样不太方便同时影响域名地址美观体验。下面介绍通过简单设置,使用80端口可以同时访问Apache提供的PHP和Tomcat提供的JSP。
说明:
- 下文将假定已安装好Apache和Tomcat服务器
- 示例域名使用的是http://he-kai.com
- 主机为Linode VPS (Ubuntu 12.04 64-bit)
设置步骤
1. 启用proxy和proxy_http模块
终端(或putty、SSH等)中使用a2enmod开启proxy和proxy_http模块
sudo a2enmod proxy sudo a2enmod proxy_http
2. Apache增加虚拟主机并指向Tomcat服务器
假设Apache中已有http://he-kai.com,Tomcat中已有http://he-kai.com:8080
现增加一个http://tomcat.he-kai.com的虚拟主机,并设置别名为http://t.he-kai.com方便用户输入
sudo vi /etc/apache2/sites-available/tomcat.he-kai.com.conf
按下i或Insert键进入输入模式,将如下内容复制进去(请根据实际情况更改)
# domain: tomcat.he-kai.com # public: /home/hekai/public/tomcat.he-kai.com/ <VirtualHost *:80> # Admin email, Server Name (domain name), and any aliases ServerAdmin [email protected] ServerName tomcat.he-kai.com ServerAlias t.he-kai.com # Index file and Document Root (where the public files are located) DirectoryIndex index.html index.php index.jsp DocumentRoot /home/hekai/public/tomcat.he-kai.com/public ProxyPass / http://he-kai.com:8080/ ProxyPassReverse / http://he-kai.com:8080/ # Log file locations LogLevel warn ErrorLog /home/hekai/public/tomcat.he-kai.com/log/error.log CustomLog /home/hekai/public/tomcat.he-kai.com/log/access.log combined </VirtualHost>
最后使用a2ensite启用此虚拟主机并重启apache2服务器
sudo a2ensite tomcat.he-kai.com.conf sudo service apache2 restart
也可以使用reload而不重启apache2服务器
到此,可以使用http://tomcat.he-kai.com或者http://t.he-kai.com来访问之前http://he-kai.com:8080的内容了,用户在浏览器的地址栏中再也不会看到8080字样了。
注意事项:
设置的重点在于使用ProxyPass和ProxyPassReverse进行代理,若只设置ProxyPass,若访问http://t.he-kai.com/xxx和http://t.he-kai.com/xxx/的效果会不一样,最后带有反斜杠的地址显示正常,而不带反斜杠的会在地址栏中显示http://he-kai.com:8080/xxx
参考文献:
- https://library.linode.com/hosting-website
- https://sites.google.com/a/ci2s.com.ar/wiki/technics/how-to-run-apache-httpd-and-tomcat-on-port-80-using-mod-proxy