最近公司准备做一个内容管理系统,由于各种原因,网站前台采用PHP语言开发,网站后台管理系统采用Java来开发,面对这样的情况,我也是醉了~~~我想要的结果是网站前台通过http://127.0.0.1来访问,那么后台管理系统的入口为http://127.0.0.1/admin ,所以当apache在处理/admin 的请求时,就将该请求转发到Tomcat。经过了一轮轮的度娘,终于配置好了,下面是我的操作步骤
1.启用proxy和proxy_http模块
使用a2enmod开启proxy和proxy_http模块
sudo a2enmod proxy
sudo a2enmod proxy_http
2.修改apache的配置文件
打开apache的httpd.conf 或者 default.conf 配置文件,在 VirtualHost 标签内添加如下配置:
<IfModule mod_proxy.c>
ProxyRequests off
<Proxy>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /admin http://127.0.0.1:8080
ProxyPassReverse /admin http://127.0.0.1:8080
</IfModule>
保存并重启apache,然后通过http://localhost/admin 就可以访问后台系统了。是不是很简答呢。
下面是我参考的一篇文章:
在默认情况下,Apache服务器安装后使用的是80端口,而Tomcat默认使用的是8080端口,当一台服务器上二者都安装时,想要访问Tomcat提供的JSP页面,需要在域名后加上:8080,这种方式我不喜欢。
下面介绍通过简单设置,使用80端口可以同时访问Apache提供的PHP和Tomcat提供的JSP。
说明:
- 下文将假定已安装好Apache和Tomcat服务器
- 示例域名使用的是http://johnny.linux/(不喜欢localhost,自定义的域名:127.0.0.1 johnny.linux)
- 主机Ubuntu 14.04
Server version: Apache/2.4.7 (Ubuntu)
Tomcat version: apache-tomcat-8.0.12
设置步骤
1. 启用proxy和proxy_http模块
使用a2enmod开启proxy和proxy_http模块(这个最方便)
sudo a2enmod proxy
sudo a2enmod proxy_http
2. Apache编辑虚拟主机
以我的配置为例,
Apache: http//www.johnny.linux/ (Alias http://johnny.linux/), Tomcat: http://johnny.linux:8080/,配置文件如下:
cat /etc/apache2/sites-available/www.johnny.linux.conf
<VirtualHost *:80>
ServerName www.johnny.linux
ServerAlias johnny.linux
ServerAdmin webmaster@johnny.linux
DocumentRoot /var/www/html
</VirtualHost>
现增加一个虚拟主机http://jsp.johnny.linux/ (注意在hosts文件里面添加该域名:sudo echo “127.0.0.1 jsp.johnny.linux” >> /etc/hosts)
sudo vi /etc/apache2/sites-available/jspjohnny.linux.conf
<VirtualHost *:80>
ServerName jsp.johnny.linux
ServerAdmin webmaster@johnny.linux
DirectoryIndex index.html index.jsp
DocumentRoot /opt/jvm/apache-tomcat-8.0.12/webapps/ROOT
ProxyPass / http://johnny.linux:8080/
ProxyPassReverse / http://johnny.linux:8080/
</VirtualHost>
最后使用a2ensite启用虚拟主机并重启apache2服务器
sudo a2ensite www.johnny.linux.conf jsp.johnny.linux.conf
sudo service apache2 restart # 或者service apache2 reload
到此,可以使用http://www.johnny.linux/或者http://jsp.johnny.linux来访问之前的内容了,不用在浏览器的地址栏中输入8080了