Apache mod_proxy_ajp链接Tomcat

介绍

作为Tomcat安装和自动启动设置的延续,我总结了将Apache端收到的HTTP请求抛给Tomcat的设置。

使用环境

    • CentOS 7.7(1908)
  • Java(亚马逊正确)
    • Java 1.8.0_242
  • 阿帕奇
    • Apache-2.4.6
  • 雄猫
    • Tomcat-9.0.30

安装 Apache

  • 使用 yum 命令安装后,显示版本信息以确认安装正确。
[root@akagi ~]# yum install -y httpd
[root@akagi ~]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   Aug  8 2019 11:41:18

配置 Apache 自动启动

  • 使用 systemctl enable... 设置自动启动,然后检查自动启动设置。
[root@akagi ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@akagi ~]# systemctl list-unit-files -t service | grep httpd
httpd.service                                 enabled 

编辑配置文件

  • 在这里,编辑 httpd.conf 并配置设置以使用反向代理将请求从 Apache 发送到 Tomcat。

检查 /etc/httpd/conf.modules.d/00-proxy.conf

  • /etc/httpd/conf.modules.d/00-proxy.conf描述了用于反向代理的模块的配置。
  • mod_proxy.so并且mod_proxy_ajp.so没有被注释掉。
    • 如果该行开始#,它将成为注释行。
  • mod_proxy_ajp允许您使用称为 AJP 的协议与 Tomcat 通信,该协议比 HTTP 更有效。
    • 我想我很早以前就在使用一个名为 Ya 的模块,但是我使用的模块在我知道之前就改变mod_jk了......mod_jk2
00-proxy.conf
# This file configures all the proxy modules:
LoadModule proxy_module modules/mod_proxy.so
...
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
...

备份 httpd.conf

  • 在编辑 httpd.conf 之前,请备份 httpd.conf 的原始状态。
[root@akagi ~]# cd /etc/httpd/conf/
[root@akagi conf]# cp -a httpd.conf httpd.conf.org

反向代理设置

  • 如下设置 ProxyPass 和 ProxyPassReverse。
    • ProxyPass {リクエストパス} ajp://localhost:8009/{Javaアプリのコンテキスト名}
    • ProxyPassReverse {リクエストパス} ajp://localhost:8009/{Javaアプリのコンテキスト名}
  • ProxyPass和ProxyPassReverse都有“将请求路径中进来的请求转发到应用服务器(这里是*Tomcat)”的作用,但是如果使用redirect,则需要设置ProxyPassReverse。
    • 在下面的示例中,如果请求匹配,则设置为传输到http://{サーバーのIP}/tomcat9/本地主机 (localhost) 上端口 8009 的上下文名称(* Tomcat 管理屏幕) 。/
    • 参考URL:mod_proxy再入門 – ProxyPassとProxyPassReverse
/etc/httpd/conf/httpd.conf
# 以下をファイルの末尾に追記
ProxyPass /tomcat9/ ajp://localhost:8009/
ProxyPassReverse /tomcat9/ ajp://localhost:8009/
  • 例如,当使用上下文名称为运行在 Tomcat 上的应用程序设置反向代理时,test设置如下。
    • tomcat9您可以将其替换为任何字符串。
/etc/httpd/conf/httpd.conf
# 以下をファイルの末尾に追記
ProxyPass /tomcat9/ ajp://localhost:8009/test/
ProxyPassReverse /tomcat9/ ajp://localhost:8009/test/

应用设置

  • 在 CentOS5 系列和 CentOS6 系列上,service httpd graceful我没有强制重启 Apache,只是反映了设置值,但graceful不能与 CentOS7 系列 Apache 一起使用。
  • 根据这篇文章,运行with 可以得到和reload之前一样的效果。systemctl reload httpdgraceful
[root@akagi ~]# systemctl reload httpd

操作确认

  • 最后,http://{サーバーのIP}/tomcat9/去确认可以看到Tomcat管理界面。

相关工作

猜你喜欢

转载自blog.csdn.net/allway2/article/details/126264528
今日推荐