Apache-2.2

具有多個 PHP Webapp 伺服器的 Apache Web 伺服器

  • February 14, 2012

什麼是 Apache/PHP 環境的最佳可擴展架構?我想使用單個 Apache 實例並將請求解除安裝到 N 個 Web 應用程序 (PHP) 伺服器;這通常是如何完成的?

我正在使用 fastcgi 和 php-fpm,這樣你就可以在不同的機器上擁有多個 php-fpm 守護程序。

請記住,php-fpm 需要訪問您的 docroot,因此在使用多台機器時需要某種共享儲存。

這個問題有多種解決方案,但如果您已經熟悉 Apache,那麼最簡單的解決方案是確保在您的 Apache 建構中啟用 mod_proxy_http 和 mod_proxy_balancer:

$ [...]/httpd -t -D DUMP_MODULES |grep proxy

然後參考mod_proxymod_proxy_balancer文件,但你可能想做這樣的事情:

ProxyRequests Off
<Proxy balancer://myphpapp>
 BalancerMember http://server1.backend.php:8000
 BalancerMember http://server2.backend.php:8000
</Proxy>
ProxyPass / balancer://myphpapp/
ProxyPassReverse / balancer://myphpapp/

ProxyRequests Off看起來很奇怪,但那是關閉正向代理,因為此設置將是反向代理。如果您使用的是 SSL,您可能還需要添加SSLProxyEngine On以保持流暢。)

當然,這只是第一步。它將在您定義的平衡器集的成員之間循環請求。如果您想要粘性會話、負載率、基於使用者代理、cookie 或 IP 地址的過濾等,請查看連結的文件,當然,請發布更多問題。

引用自:https://serverfault.com/questions/360025