Tomcat HTTP协议与AJP协议

素颜马尾好姑娘i 2021-05-27 14:10 657阅读 0赞

Tomcat HTTP协议与AJP协议
HTTP Connector
AJP Connector
配置

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

  1. <!-- Define a non-SSL/TLS HTTP/1.1 Connector on port 8080 -->
  2. <Connector port="8080" protocol="HTTP/1.1"
  3. connectionTimeout="20000"
  4. redirectPort="8443" />
  5. <!-- Define an AJP 1.3 Connector on port 8009 -->
  6. <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

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

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

Web客户访问Tomcat服务器的两种方式:

è¿éåå¾çæè¿°

你对这个有误解,其实你更应该去看tomcat的官方文档,而不是网上所谓的资料: https://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html

ajp13是一个二进制的TCP传输协议,相比HTTP这种纯文本的协议来说,效率和性能更高,也做了很多优化。显然,浏览器并不能直接支持AJP13协议,只支持HTTP协议。所以实际情况是,通过Apache的proxy_ajp模块进行反向代理,暴露成http协议给客户端访问。所以这么来看实际跟动静分离没一毛钱关系,你如果没做动静分离的设置,那么单纯反向代理AJP13协议也没太大的意义。

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

发表评论

表情:
评论列表 (有 0 条评论,657人围观)

还没有评论,来说两句吧...

相关阅读

    相关 AJP13协议

    AJP13是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。WEB服务器通过TCP连接和SERVLET容器连接。为了减少进程生成socket的花费,WEB服务器和SE