Apache mod_proxy_http链接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_http.so没有被注释掉。
    • 如果该行开始#,它将成为注释行。

00-proxy.conf

# This file configures all the proxy modules:
LoadModule proxy_module modules/mod_proxy.so
...
LoadModule proxy_ajp_module modules/mod_proxy_http.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 {请求路径} http://localhost:8009/{Java应用的上下文名称}
    • ProxyPassReverse {请求路径} http://localhost:8009/{Java应用的上下文名称}
  • ProxyPass和ProxyPassReverse都有“将请求路径中进来的请求转发到应用服务器(这里是*Tomcat)”的作用,但是如果使用redirect,则需要设置ProxyPassReverse。

/etc/httpd/conf/httpd.conf

# 在文件末尾添加以下
ProxyPass /tomcat9/ http://localhost:8009/
ProxyPassReverse /tomcat9/ http://localhost:8009/
  • 例如,当使用上下文名称为运行在 Tomcat 上的应用程序设置反向代理时,test设置如下。
    • tomcat9您可以将其替换为任何字符串。

/etc/httpd/conf/httpd.conf

#  在文件末尾添加以下
ProxyPass /tomcat9/ http://localhost:8009/test/
ProxyPassReverse /tomcat9/ http://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管理界面。

如果Apache HTTPD 报错Permission denied: AH00957: http: attempt to connect to 127.0.0.1:8080

这个错误实际上与文件权限或类似的东西无关。它实际上意味着 httpd 已被拒绝连接到该 IP 地址和端口的权限。

最常见的原因是 SELinux 不允许 httpd 建立网络连接。

要解决它,您需要更改一个 SELinux 布尔值(它将在重新启动后自动保持)。您可能还想重新启动 httpd 以重置代理工作者,尽管这不是严格要求的。

# setsebool -P httpd_can_network_connect 1

有关 SELinux 如何影响 httpd 的更多信息,请阅读 httpd_selinux 手册页。

相关工作

猜你喜欢

转载自blog.csdn.net/allway2/article/details/126288762