AJP(Apache JServer Protocol) 协议最初是由 Gal Shachor 设计。对于Web服务器与Servlet容器通信来讲,最主要目的是:

    • 提高性能(主要是速度)。
    • 添加对SSL的支持。

    目前Tomcat中使用的版本均为AJP1.3,简称为ajp13。ajp13协议是面向数据包的。出于对性能的考虑,选择了以二进制格式传输,而不是更易读的纯文本。
    Web服务器通过TCP连接与servlet容器进行通信。为了减少昂贵的套接字(socket)创建过程,web服务器将尝试保持与servlet容器的持久的TCP连接,并为多个请求/响应周期重复使用一个连接。
    官方文档位置:https://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html
    在Tomcat的server.xml 中默认配置了两种连接器:
    1. Tomcat AJP 协议 - 图1
    一种是使用的HTTP Connector,监听8080端口,还有一个AJP Connector,监听了8009端口。在Tomcat中这个协议的监听的一直都是默认开启的。
    AJP Connector 的配置文档:http://tomcat.apache.org/tomcat-6.0-doc/config/ajp.html
    AJP Connector 可以通过 AJP 协议和另一个 web 容器进行交互。例如正常情况下的访问是由客户端通过HTTP协议访问到Tomcat服务器返回结果,此时将由HTTP Connector处理请求,但也可以使用通过AJP协议来进行访问,此时将由AJP Connector来处理。
    但是通常情况下用户的客户端并不会支持AJP协议,因此想要使用AJP协议进行访问,需要自己实现连接器,或由中间的代理服务器进行转发。

    • Apache HTTP Server 2.x 上的启用 AJP 的 mod_proxy 模块(在 2.2 上已成为默认配置模块)
    • 其他任何支持 JK 1.2.x 的服务器