Tomcat和Apache的结合

将安装在不同服务器上的Tomcat和Apache进行协作。
一旦访问特定目录,就将请求转发至Tomcat服务器。

前提 (Qian ti)

Apache服务器版本:Apache/2.4.6 (CentOS)
Apache Tomcat版本8.5.68
CentOS Linux发布7.5.1804(核心):Apache和Tomcat都是相同版本。

LoadModule的配置

/etc/httpd/conf.modules.d :模块定义文件存放位置
在上述目录中的00-proxy.conf文件中,
默认情况下有很多文件,它们之间有何不同?

-rw-r--r--. 1 root root 3739 Nov 16  2020 00-base.conf
-rw-r--r--. 1 root root  139 Nov 16  2020 00-dav.conf
-rw-r--r--. 1 root root   41 Nov 16  2020 00-lua.conf
-rw-r--r--. 1 root root  742 Nov 16  2020 00-mpm.conf
-rw-r--r--. 1 root root  957 Nov 16  2020 00-proxy.conf
-rw-r--r--. 1 root root   88 Nov 16  2020 00-systemd.conf
-rw-r--r--. 1 root root  451 Nov 16  2020 01-cgi.conf

我参考了这里的答案。

似乎是为了将各个功能的模块嵌入到各自的配置文件(.conf文件)中来定义每个功能的.conf文件。不过,如何使用似乎相当程度上取决于使用者。
另外,base.conf和conf/http.conf的意义似乎非常相似,导致有些人感到困惑。

首先,为了使用作为Reverse Proxy的功能,我们需要检查00-proxy.conf的配置。
以下的mod_proxy.so和mod_proxy_ajp.so在使用代理时是必需的。
* 这些已经被默认配置好了。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

同样,需要确保conf.modules.d目录中的文件被正确加载。
通过在/etc/httpd/conf/httpd.conf文件中进行Include,以确认其是否被包含。
* 这也是默认设置。

Include conf.modules.d/*.conf

httpd的传输设置

需要在ProxyPass目录和ProxyPassReverse目录中进行配置。
需要在httpd.conf文件中进行配置。

ProxyPass /tomcat9/ ajp://10.10.10.10:8009/
ProxyPassReverse /tomcat9/ ajp://10.10.10.10:8009/

在上述情况下,将请求通过AJP协议使用8009端口转发到具有IP地址为10.10.10.10的Tomcat服务器,网址为http://<Apache服务器的IP>/tomcat9/。

Tomcat 的监听设置

同样,在这种情况下,选择的端口是在Tomcat服务器上定义的。

    <Connector protocol="AJP/1.3"
               address="0.0.0.0"
               port="8009"
               redirectPort="8443"
                secretRequired="false" />

默认情况下,这些是注释掉的(被包围),只需要删除它们就可以了。
顺便提一下,各个项目的意思如下:
protocol = “AJP/1.3″:使用AJP协议。
address=”0.0.0.0″:定义服务器监听地址。
0.0.0.0表示Tomcat服务器监听所有IP地址。如果只是特定IP,则需要单独设置。
port = “8009”:将连接端口设置为8009。
redirectPort = “8443”:将通过8009端口连接的通信重定向到8443端口。
secretRequired = false:
从Tomcat 9.0.31开始,默认为true的属性。
如果设置为true,则需要在连接服务器时匹配字符串。
但是,由于Tomcat的版本是8.5,所以这是不必要的。

进行连接测试

在进行了上述设置后,连接到Apache服务器IP/tomcat9/时,确实显示了Tomcat的首页。

image.png
广告
将在 10 秒后关闭
bannerAds