Linux下配置Apache与Tomcat连接

Apache http server与tomcat同属于apache基金会,两者都可以提供Web服务,只不过两者的侧重点不同。http server侧重用作web服务器,而tomcat则侧重于作为轻量级的应用服务器。同时,两者也可以结合 起来使用,即可以将动态请求通过http server转发至后端的tomcat来完成,http server只处理静态请求。本文描述了如何配置apache与tomcat连接。

一、Tomcat连接器架构及协议 1、Tomcat连接器架构

基于Apache做为Tomcat前端的架构来讲,Apache通过mod_jk、mod_jk2或mod_proxy模块与后端的Tomcat进行数据交换。而对Tomcat来说,每个Web容器实例都有一个Java语言开发的连接器模块组件,即org.apache.catalina.Connector这个类。这个类的构造器可以构造两种类别的连接器:HTTP/1.1负责响应基于HTTP/HTTPS协议的请求,AJP/1.3负责响应基于AJP的请求。但可以简单地通过在server.xml配置文件中实现连接器的创建,但创建时所使用的类根据系统是支持APR(Apache Portable Runtime)而有所不同。

APR是附加在提供了通用和标准API的操作系统之上一个通讯层的本地库的集合,它能够为使用了APR的应用程序在与Apache通信时提供较好伸缩能力时带去平衡效用。同时,需要说明的是,mod_jk2模块目前已经不再被支持了,mod_jk模块目前还apache被支持,但其项目活跃度已经大大降低。因此,目前更常用的方式是使用mod_proxy模块。
如果支持APR:
1、HTTP/1.1:org.apache.cotote.http11.Http11AprProtocol
2、AJP/1.3:org.apache.coyote.ajp.AjpAprProtocol
如果不支持APR:
HTTP/1.1: org.apache.coyote.http11.Http11Protocol
AJP/1.3: org.apache.jk.server.JkCoyoteHandler

2、连接器协议

Tomcat的Web服务器连接器支持两种协议:AJP和HTTP,它们均定义了以二进制格式在Web服务器和Tomcat之间进行数据传输,并提供相应的控制命令。
AJP(Apache JServ Protocol)协议:
目前正在使用的AJP协议的版本是通过JK和JK2连接器提供支持的AJP13,它基于二进制的格式在Web服务器和Tomcat之间传输数据,而此前的版本AJP10和AJP11则使用文本格式传输数据。

HTTP协议:诚如其名称所表示,其是使用HTTP或HTTPS协议在Web服务器和Tomcat之间建立通信,此时,Tomcat就是一个完全功能的HTTP服务器,它需要监听在某端口上以接收来自于商前服务器的请求。

二、本文环境介绍 os版本:CentOS6.5 64bit jdk版本:1.7.0_80 tomcat版本:8.0.29 apache版本:2.4.9 apache服务器IP:192.168.21.10/24 tomcat实例一IP:192.168.21.31/24 (端口默认) 三、安装apache与toamcat

参考:
Linux下编译安装Apache httpd 2.4
Linux下安装tomcat8

验证httpd安装 # /usr/local/apache/bin/httpd -v Server version: Apache/2.4.9 (Unix) Server built: Nov 18 2015 17:38:27 验证tomcat安装 # catalina.sh version Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Server version: Apache Tomcat/8.0.29 Server built: Nov 20 2015 09:18:00 UTC Server number: 8.0.29.0 OS Name: Linux OS Version: 2.6.32-431.el6.x86_64 Architecture: amd64 JVM Version: 1.7.0_80-b15 JVM Vendor: Oracle Corporation 四、配置tomcat 添加以下内容 # vi /usr/local/tomcat/conf/server.xml <Engine name="Catalina" defaultHost="www.ycdata.net" jvmRoute="TomcatA"> //注,添加前注释原来的engine <Host name="www.ycdata.net" appBase="/website" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="webapps" reloadable="true" /> </Host> 创建应用目录及测试页面,此处测试使用非缺省目录 # mkdir /website/webapps # vim /website/webapps/index.jsp <%@ page language="java" %> <html> <head><title>TomcatA</title></head> <body> <h1><font color="red">TomcatA </font></h1> <table align="centre" border="1"> <tr> <td>Session ID</td> <% session.setAttribute("abc","abc"); %> <td><%= session.getId() %></td> </tr> <tr> <td>Created on</td> <td><%= session.getCreationTime() %></td> </tr> </table> </body> </html> 五、配置apache通过与Tomcat连接 1、基于mod_proxy模块(http协议) 确保装载以下模块 # /usr/local/apache/bin/httpd -D DUMP_MODULES | grep proxy proxy_module (shared) proxy_connect_module (shared) proxy_ftp_module (shared) proxy_http_module (shared) proxy_fcgi_module (shared) proxy_scgi_module (shared) proxy_ajp_module (shared) proxy_balancer_module (shared) proxy_express_module (shared) 确保装载以下模块 # /usr/local/apache/bin/httpd -M |grep slot slotmem_shm_module (shared) 配置apache反向代理,注释DocumentRoot,添加Include部分,如下 # vi /etc/http24/httpd.conf #DocumentRoot "/usr/local/apache/htdocs" Include /etc/httpd24/extra/httpd-proxy.conf 编辑httpd-proxy.conf文件(此处使用虚拟主机方式),增加以下内容 # vim /etc/httpd24/extra/httpd-proxy.conf <VirtualHost *:80> ProxyVia On ProxyRequests Off ProxyPass / 192.168.21.31:8080/ ProxyPassReverse / 192.168.21.31:8080/ <Proxy *> Require all granted </Proxy> <Location / > Require all granted </Location> </VirtualHost> 重启apache # service httpd24 configtest # service httpd24 restart 2、基于ajp_proxy模块(ajp协议) ajp_proxy 连接方式其实跟 http_proxy 方式一样,都是由 mod_proxy 所提供的功能。 配置也是一样,只需要把 http:// 换成 ajp:// ,同时连接的是 Tomcat 的 AJP Connector 所在的端口 # vim /etc/httpd24/extra/ajp-proxy.conf <VirtualHost *:80> ProxyVia On ProxyRequests Off ProxyPass / ajp://192.168.21.31:8009/ ProxyPassReverse / ajp://192.168.21.31:8009/ <Proxy *> Require all granted </Proxy> <Location / > Require all granted </Location> </VirtualHost> 3、验证 # curl <html> <head><title>TomcatA</title></head> <body> <h1><font color="red">TomcatA </font></h1> <table align="centre" border="1"> <tr> <td>Session ID</td> <td>47841C4CFB4755ED89056AE4D48F93AB.TomcatA</td> </tr> <tr> <td>Created on</td> <td>1449023138420</td> </tr> </table> </body> </html> 4、通过mod_jk模块与Tomcat连接 安装tomcat连接器 # cd /usr/local/src # tar xf tomcat-connectors-1.2.41-src.tar.gz # cd tomcat-connectors-1.2.41-src/native/ # ./configure --with-apxs=/usr/local/apache/bin/apxs # make && make install # ls -hltr /usr/local/apache/modules/*jk* -rwxr-xr-x 1 root root 1.1M Dec 2 13:49 /usr/local/apache/modules/mod_jk.so 修改配置文件 如果先前定义了proxy代理方式,禁用后再添加如下条目 # vim /etc/httpd24/httpd.conf Include /etc/httpd24/extra/httpd-jk.conf # vim /etc/httpd24/extra/httpd-jk.conf LoadModule jk_module modules/mod_jk.so JkWorkersFile /etc/httpd24/extra/workers.properties JkLogFile logs/mod_jk.log JkLogLevel debug JkMount /* TomcatA JkMount /status/ stat1 # vim /etc/httpd24/extra/workers.properties worker.list=TomcatA,stat1 worker.TomcatA.port=8009 worker.TomcatA.host=192.168.21.31 worker.TomcatA.type=ajp13 worker.TomcatA.lbfactor=1 worker.stat1.type = status [root@orasrv1 ~]# service httpd24 configtest Syntax OK [root@orasrv1 ~]# service httpd24 restart Stopping httpd24: [ OK ] Starting httpd24: [ OK ] # /usr/local/apache/bin/httpd -M |grep jk jk_module (shared) [root@orasrv1 ~]# curl <html> <head><title>TomcatA</title></head> <body> <h1><font color="red">TomcatA </font></h1> <table align="centre" border="1"> <tr> <td>Session ID</td> --Author : Leshami --Blog : <td>F6C954BBBEE5B7874F4829AFEF762E41.TomcatA</td> </tr> <tr> <td>Created on</td> <td>1449038089862</td> </tr> </table> </body> </html> Response Headers 头部如下: Connection:Keep-Alive Content-Length:366 Content-Type:text/html;charset=ISO-8859-1 Date:Sat, 19 Dec 2015 11:43:50 GMT Keep-Alive:timeout=5, max=96 Server:Apache/2.4.9 (Unix) mod_jk/1.2.41 //mod_jk方式

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3b565a3e42189424e7f6b7a389f5428f.html