Apache如何与应用服务器通信

Apache如何与应用服务器通信,apache,http,webserver,passenger,reverse-proxy,Apache,Http,Webserver,Passenger,Reverse Proxy,我使用Apache作为反向代理,在它后面我使用(Rails服务器)作为应用服务器。我对Apache如何与Phusion Passenger(其背后的应用服务器)通信感到困惑。 以下是我从httpd获得的信息: > ps aux | grep /MyWebsite/bin/httpd googly 8353 0.0 0.0 73856 3280 ? Ss Aug26 0:00 /MyWebsite/bin/httpd -d /MyWebsite -f va

我使用Apache作为反向代理,在它后面我使用(Rails服务器)作为应用服务器。我对Apache如何与Phusion Passenger(其背后的应用服务器)通信感到困惑。 以下是我从httpd获得的信息:

> ps aux | grep /MyWebsite/bin/httpd
googly    8353  0.0  0.0  73856  3280 ?        Ss   Aug26   0:00 /MyWebsite/bin/httpd -d /MyWebsite -f var/state/apache-1080/httpd.conf
googly    8391  0.0  0.0  73856  1828 ?        S    Aug26   0:00 /MyWebsite/bin/httpd -d /MyWebsite -f var/state/apache-1080/httpd.conf
... # showing that 8353 forks 10 process, and 8353 is the father process
当HTTP请求到来时,Apache会分配一个进程来处理该请求(例如process
8391
),并将其传递给应用服务器

我的问题是,这到底是怎么回事?Apache如何与应用服务器通信?我认为在这种情况下,不同的应用服务器是相似的

8391
是否将请求传递给Phusion乘客?如果是这样,Phusion乘客应该有自己的独立流程运行,对吗?或者可以将
8391
视为Phusion乘客流程,它可以自行处理请求?

  • Apache接受根据线程生成的请求
  • 它将请求发送回应用程序服务器
  • 在收到应用服务器的响应之前,Apache线程将处于等待/运行状态
  • Apache将请求发送回客户端
  • Apache在确认数据后关闭连接
  • apache确认数据后,应用程序服务器线程关闭

你是说Apache有自己的进程,而应用服务器也有自己的进程?但是Apache如何知道应用服务器的进程/端口呢?Apache侦听端口1,而应用程序服务器侦听端口2,端口1不等于端口2,对吗?您已经将Apache用作反向代理,其中您提到了应用程序服务器连接到哪个端口的详细信息。Apache和应用程序都将被捆绑在一起,以期望应用程序对Apache做出响应。端口只会有助于确定要连接到哪个端口。在一般情况下,Apache或应用程序会根据头/会话和许多其他事情来响应附加到其上的适当进程,从而具有其唯一性。我发现在httpd.conf中,有一行
Listen 1080
,这是否意味着应用程序服务器正在使用端口1080?问上述问题的目的是什么,它没有理解你原来的帖子。是的,你的理解是正确的,并在我上面的回答中作了简要解释。我相信这会有帮助。