小白指南:CentOs下配置Apache 反向代理Tomcat

问题:

服务器上同时安装了Apache和Tomcat。
原本有个PHP web网站A,运行在Apache下,通过域名www.test.cn访问。
新增一个 SpringMvc 架构的网站B,运行在Tomcat下。
现在B项目也希望通过域名访问,可是80端口已经被Apache使用了。如何能让Tomcat下的网站也能对外呈现80端口,通过域名访问呢?

解决方法:

配置Apache反向代理Tomcat。

在原有域名下新增一个二级域名level2.test.cn,当用户访问B网站时,首先访问此二级域名(80端口),然后由Apache把该域名下的请求转发到Tomcat(8080端口)。

环境:

服务器:阿里云CentOs7;
Apache version :2.6.4。
Tomcat version: 8.5.45。

具体实现:

1)确认 Apache 启用了代理模块

打开httpd.conf文件:

vi /etc/httpd/conf/httpd.conf

看下面这段

# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
Include conf.modules.d/*.conf

发现相关module的加载都在conf.module.d文件夹中。进入conf.module.d文件夹 :

[root@1234 conf]# cd ..
[root@1234 httpd]# ls
conf  conf.d  conf.modules.d  logs  modules  run  vhost-conf.d
[root@1234 httpd]# cd conf.modules.d
[root@1234 conf.modules.d]# ls
00-base.conf  00-lua.conf  00-proxy.conf  00-systemd.conf  10-php.conf
00-dav.conf   00-mpm.conf  00-ssl.conf    01-cgi.conf

打开 00-proxy.conf 文件(vi 00-proxy.conf

# This file configures all the proxy modules:
LoadModule proxy_module modules/mod_proxy.so
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_express_module modules/mod_proxy_express.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

代理所需模块都在里面了。
Ok,这一步其实神马都不必做,完成了。

2) 配置反向代理

打开 vhost-name.conf文件。

[root@1234 httpd]# ls
conf  conf.d  conf.modules.d  logs  modules  run  vhost-conf.d
[root@1234 httpd]# cd vhost-conf.d
[root@1234 vhost-conf.d]# ls
vhost-name.conf
[root@1234 vhost-conf.d]# vi vhost-name.conf

在文件末尾新增

<VirtualHost *:80>
ServerAdmin webmaster@test.cn
ServerName http://level2.test.cn
ProxyPreserveHost On
ProxyPass /  http://xxx.xx.xxx.xxx:8080/
ProxyPassReverse /  http://xxx.xx.xxx.xxx:8080/
</VirtualHost>

http://xxx.xx.xxx.xxx:8080/ 是Tomcat启动页网址。保存并关闭文件。重新启动Apache。

在浏览器中输入http://level2.test.cn,就可以访问Tomcat启动页。

3)访问Tomcat下Web项目

该项目以war文件发布,在Tomcat下直接访问url是:
http://xxx.xx.xxx.xxx:8080/project-war-name

如果用Apache反向代理该项目地址,上面第2)步VirtualHost 需要新增一点内容:

<VirtualHost *:80>
ServerAdmin webmaster@test.cn
ServerName http://level2.test.cn
ProxyPreserveHost On
ProxyPass /  http://xxx.xx.xxx.xxx:8080/
ProxyPassReverse /  http://xxx.xx.xxx.xxx:8080/

ProxyPreserveHost On
ProxyPass /project-war-name http://xxx.xx.xxx.xxx:8080/project-war-name
ProxyPassReverse /project-war-name http://xxx.xx.xxx.xxx:8080/project-war-name
</VirtualHost>

保存并关闭文件。重新启动Apache。
在浏览器中输入http://level2.test.cn/project-war-name,就可以访问该项目了。

That’s All ,Thank you.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值