Apache httpd和Tomcat如何协同工作?

IAm*_*aja 14 java apache tomcat web-applications war

我正在继承一个涉及Java Web应用程序的项目,该应用程序的后端由Apache httpd/Tomcat组合提供支持.Web服务器用于回送JS,静态内容和执行常规负载平衡,而Tomcat通过单个WAR文件回送JSP.

我将在今天或明天稍后访问代码库,但是想提前尝试做一些研究.

我的问题可以归结为:这两个如何一起工作?

  • 谁首先收到HTTP请求?
  • httpd如何知道何时将JSP请求转发到Tomcat,或仅仅响应请求本身?
  • httpd如何"传递"请求,并从Tomcat"接收"响应?是否只是将请求/响应"复制并粘贴"到Tomcat正在侦听的端口上?是否存在某种操作系统级进程间通信?等等.

这些只是技术如何相互协作的一般性问题.提前致谢!

T.J*_*der 19

谁首先收到HTTP请求?

阿帕奇几乎可以肯定.但是,可能存在直接与Tomcat对话的管理进程.

httpd如何知道何时将JSP请求转发到Tomcat,或仅仅响应请求本身?

从它的配置.具体情况会有所不同.例如,它可能正在使用mod_jkmod_jk2,在这种情况下,您将JkMount在配置文件中找到指令,例如:

JkMount /*.jsp ajp13_worker
Run Code Online (Sandbox Code Playgroud)

......它告诉它在站点的根目录上的请求通过匹配文件*.jspajp13_worker,这是在定义workers.properties文件.

或者它可以在简单的HTTP 反向代理配置中设置.或者是其他东西.

httpd如何"传递"请求,并从Tomcat"接收"响应?

这取决于配置; 它可能是HTTP,可能是AJP,也可能是使用其他模块.

是否只是将请求/响应"复制并粘贴"到Tomcat正在侦听的端口上?

有点.:-)请参阅上面的反向代理链接.

是否存在某种操作系统级进程间通信?

是.AFAIK,它是所有基于套接字的(而不是说,共享内存的东西),这意味着(除其他外)Tomcat和Apache不需要在同一台机器上运行.