Rails的部署方案中,有一种是Apache作为Reverse Proxy,把请求转发给应用服务器(比如说Phusion Passenger)。Apache作为反向代理服务器,是如何与后面的应用服务器交互的?
比如我的Apache监听1080端口,查了一下进程信息:
> 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
... # 起了10个进程,并且我知道8353是父进程,其余的是子进程
当一个请求到来,首先会到Apache,Apache会从这些进程中分配一个进程来处理这个请求(比如分配了8391这个进程),那么8391这个进程会做什么呢?他是会把这个请求转发给后面的应用服务器(Phusion Passenger)吗?如果是这样,那么应用服务器是不是也有自己独立的进程?还是说8391这个进程就已经可以当成是应用服务器的进程了,他自己就能处理这个请求?
Apache是如何与挂在他后面的应用服务器交互的呢?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
你起了apache之后它就会有十几二十个进程起来(这要看你的配置了)
然后在apache收到request之后有一个进程会处理它,如果它符合反向代理的条件,就会把request发送到你的应用服务器
其实应用服务器应该也是能够直接访问的(除非有什么防火墙啊之类的)
反正就是应用服务器收到了request,然后传回一个response给apache
apache再把response传回给浏览器
不过在这过程中可能还需要配置下对于response中间的html里面的url的改写