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的首页。