小白指南: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 [email protected]
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 [email protected]
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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章