首頁 >後端開發 >php教程 >Nginx 和 PHP 的兩種部署方式比較

Nginx 和 PHP 的兩種部署方式比較

WBOY
WBOY原創
2016-07-29 09:12:531011瀏覽

2種部署方式簡介

第一種

  • 前置1台nginx伺服器做HTTP反向代理和負載平衡
  • 後面太伺服器的NginxWeb服務,並呼叫做提供的fast cgi服務
  • 此種部署方式最為常見,web服務和PHP服務在同一台服務器上都有部署

第二種

  • 前置1台nginx服務器做Web服務
  • 後面服務器只部署php-fpm服務,供nginx服務器調用
  • 前置1台nginx服務器,在調用後面多例php-fpm服務時,也可以做到負載均衡

如下圖:

Nginx 和 PHP 的两种部署方式比较

對比

從系統設計角度

第一種部署是常規部署方式,大中小規模網站都能適用。

第二種,不同服務部署在不同伺服器上,更細緻。但也有幾個問題:

  • 前置nginx充當Web服務。靜態資源的存取、壓縮傳輸、快取設定等,也都集中在這台伺服器上。壓力會大,容易成為瓶頸。
  • 如果靜態資源都存放於CDN,不需要HTTP 壓縮傳輸,這種部署方式還算比較合理;
  • 承接上面兩點,還可以對這種部署方式進行最佳化。如前置nginx負載平衡和反向代理,中間是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部署到一台伺服器上即可,不需要反向代理和負載平衡。

總結

如果是LAMP環境的部署,第一種比較常見。

如果不是LAMP,是nginx和其他fastcgi服務交互,例如C/C++、java的fastcgi程序,在大規模的網路應用中,類似第二種的部署是常見的。做到不同服務之間分開部署,反而簡化了系統的網路結構,更方便維護。

後記

此篇博文的內容,都來自於和百度前同事在QQ群組裡的討論。

轉載請註明來源

部落格首頁:作程的技術部落格

文章標題:《Nginx 和 PHP 的兩種部署方式比較》

本文連結:http://it.zuocheng.net/compare-2-nginx-php-deployee-mode-zh


以上就介紹了Nginx 和 PHP 的兩種部署方式比較,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn