2種部署方式簡介
第一種
#前置1台nginx伺服器做http反向代理程式和負載平衡
後面n太伺服器的nginx做web服務,並呼叫php-fpm提供的fast cgi服務
此種部署方式最常見,web服務和php服務在同一台伺服器上都有部署
第二種
前置1台nginx伺服器做web服務
後面伺服器只部署php-fpm服務,供nginx伺服器呼叫
前置1台nginx伺服器,在呼叫後面多例php-fpm服務時,也可以做到負載平衡
如下圖:
##比較
從系統設計角度
第一種部署是常規部署方式,大中小規模網站都能適用。
第二種,不同服務部署在不同伺服器上,更細緻。但也有幾個問題:
- 前置nginx充當web服務。所有靜態資源的存取、壓縮傳輸和快取設定都被集中到這台伺服器。壓力會大,容易成為瓶頸。
- 如果靜態資源都存放在cdn,不需要http 壓縮傳輸,這種部署方式還算比較合理;
- 承接上面兩點,還可以對這種部署方式進行最佳化。在前面的負載平衡和反向代理層之後,中間是一個 Nginx web 伺服器,後面部署了一個 PHP-FPM 服務。從效能角度
相比第二種部署方式,第一種多走了一次進程間互動。
- 依照第一種部署,當一個http請求過來,先是nginx反向代理轉發至nginx web服務(透過網路),web服務再透過fastcgi協定與php-fpm進行互動(進程間互動);
- 依照第二種部署,當一個http請求過來,充當web服務的nginx,直接透過網路與php-fpm進行互動
第一種部署,透過網路互動的是http協議,第二種透過網路互動的是fast-cgi協議, 這兩種協議比較如何?
fast cgi 的封包會比http稍微大一些,fast cgi協定會比http攜帶更多的參數資訊、傳輸控制資訊等等。 fast cgi 協定比http協定格式化嚴格一些,解析起來速度更快一些。從維運角度
第一種是最常見的部署方式,簡單統一,所有提供web服務的伺服器上的服務都是同構的,單調粗放。
第二種則是將nginx和php-fpm單獨分開部署,不同服務在伺服器叢集上的分佈更細緻。如果統計web服務中的壓力分佈,可以更精細地利用硬體資源。維運成本也更高。
從開發測試角度
兩種部署方式都不合適開發環境或測試環境。
開發和測試環境把nginx和php部署到一台伺服器上即可,不需要反向代理和負載平衡。
以上是Nginx和PHP的部署方式是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!