快捷搜索: 王者荣耀 脱发

Tomcat HTTP协议与AJP协议

今天国家信息安全漏洞平台发布了Tomcat有个AJP漏洞,涉及到各个版本,之前对AJP没有大的了解,今天特意的了解了一下。

Tomcat HTTP协议与AJP协议 HTTP Connector AJP Connector 配置 Tomcat在server.xml中配置了两种连接器。 HTTP Connector 拥有这个连接器,Tomcat才能成为一个web服务器,但还额外可处理Servlet和jsp。 AJP Connector AJP连接器可以通过AJP协议和另一个web容器进行交互。 配置

<!-- Define a non-SSL/TLS HTTP/1.1 Connector on port 8080 -->
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

第一个连接器监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。

第二个连接器监听8009端口,负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时,就需要用到这个连接器。AJP连接器可以通过AJP协议和一个web容器进行交互。

Web客户访问Tomcat服务器的两种方式: AJP13是一个二进制的TCP传输协议,相比HTTP这种纯文本的协议来说,效率和性能更高,也做了很多优化。显然,浏览器并不能直接支持AJP13协议,只支持HTTP协议。 所以实际情况是,通过Apache的proxy_ajp模块进行反向代理,暴露成http协议给客户端访问, 主要应用场景就是动静分离时,两个服务器之间通信使用。

支持AJP协议的代理服务器可以用这种做法,但是支持AJP代理的服务器非常少,比如目前很火爆的Nginx就没这个模块。因此tomcat的配置大部分都是关闭AJP协议端口的,因为除了Apache之外别的http server几乎都不能反代AJP13协议,没太大用处了。

经验分享 程序员 微信小程序 职场和发展