Ubuntu下、Apache 和Tomcat 共用80端口

时间:2022-09-03 19:24:24

      最近公司准备做一个内容管理系统,由于各种原因,网站前台采用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了