詳解Nginx 和 PHP 的兩種部署方式的對比
詳解Nginx 和 PHP 的兩種部署方式的對比
2種部署方式簡介
第一種
- 前置1臺nginx服務(wù)器做HTTP反向代理和負(fù)載均衡
- 后面N太服務(wù)器的Nginx做Web服務(wù),并調(diào)用php-fpm提供的fast cgi服務(wù)
- 此種部署方式最為常見,web服務(wù)和PHP服務(wù)在同一臺服務(wù)器上都有部署
第二種
- 前置1臺nginx服務(wù)器做Web服務(wù)
- 后面服務(wù)器只部署php-fpm服務(wù),供nginx服務(wù)器調(diào)用
- 前置1臺nginx服務(wù)器,在調(diào)用后面多例php-fpm服務(wù)時(shí),也可以做到負(fù)載均衡
如下圖 :

對比
從系統(tǒng)設(shè)計(jì)角度
第一種部署是常規(guī)部署方式,大中小規(guī)模網(wǎng)站都能適用。
第二種,不同服務(wù)部署在不同服務(wù)器上,更加細(xì)致。但也有幾個(gè)問題:
- 前置nginx充當(dāng)Web服務(wù)。對靜態(tài)資源的訪問、壓縮傳輸、緩存設(shè)置等,也都集中在這臺服務(wù)器上。壓力會大,容易成為瓶頸。
- 如果靜態(tài)資源都存放于CDN,不需要HTTP 壓縮傳輸,這種部署方式還算比較合理;
- 承接上面兩點(diǎn),還可以對這種部署方式進(jìn)行優(yōu)化。如前置nginx負(fù)載均衡和反向代理,中間是nginx Web服務(wù),后面部署php-fpm服務(wù)。 從性能角度
相比第二種部署方式,第一種多走了一次進(jìn)程間交互。
- 按照第一種部署,當(dāng)一個(gè)http請求過來,先是nginx反向代理轉(zhuǎn)發(fā)至nginx Web服務(wù)(通過網(wǎng)絡(luò)),Web服務(wù)再通過fastcgi協(xié)議與php-fpm進(jìn)行交互(進(jìn)程間交互);
- 按照第二種部署,當(dāng)一個(gè)http請求過來,充當(dāng)Web服務(wù)的nginx,直接通過網(wǎng)絡(luò)與php-fpm進(jìn)行交互
第一種部署,通過網(wǎng)絡(luò)交互的是HTTP協(xié)議,第二種通過網(wǎng)絡(luò)交互的是fast-cgi協(xié)議, 這兩種協(xié)議對比如何呢?
fast cgi 的數(shù)據(jù)包會比HTTP稍微大一些,fast cgi協(xié)議會比HTTP攜帶更多的參數(shù)信息、傳輸控制信息等等。 fast cgi 協(xié)議比HTTP協(xié)議格式化嚴(yán)格一些,解析起來速度更快一些。 從運(yùn)維角度
第一種是最常見的部署方式,簡單統(tǒng)一,所有提供web服務(wù)的服務(wù)器上的服務(wù)都是同構(gòu)的,單調(diào)粗放。
第二種則是將nginx和PHP-fpm單獨(dú)分開部署,不同服務(wù)在服務(wù)器集群上的分布更加細(xì)致。如果統(tǒng)計(jì)Web服務(wù)中的壓力分布,可以更加精細(xì)地利用硬件資源。運(yùn)維成本也更高。
從開發(fā)測試角度
兩種部署方式都不合適開發(fā)環(huán)境或測試環(huán)境。
開發(fā)和測試環(huán)境把nginx和PHP部署到一臺服務(wù)器上即可,不需要反向代理和負(fù)載均衡。
總結(jié)
如果是LAMP環(huán)境的部署,第一種比較常見。
如果不是LAMP,是nginx和其他fastcgi服務(wù)交互,比如C/C++、Java的fastcgi程序,在大規(guī)模的網(wǎng)絡(luò)應(yīng)用中,類似第二種的部署是常見的。做到不同服務(wù)之間分開部署,反而是簡化了系統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu),更加便于維護(hù)。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
Nginx?403?forbidden錯(cuò)誤的五種原因及詳細(xì)解決方法
這篇文章主要給大家介紹了關(guān)于Nginx?403?forbidden錯(cuò)誤的五種原因及詳細(xì)解決方法,相信很多人對403 forbidden是什么意思有了大致的了解,那么當(dāng)我們遇到403 forbidden怎么解決呢,需要的朋友可以參考下2023-08-08
Nginx可視化管理工具結(jié)合cpolar實(shí)現(xiàn)遠(yuǎn)程訪問的步驟詳解
Nginx Proxy Manager 是一個(gè)開源的反向代理工具,本文將給大家介紹在Linux 安裝Nginx Proxy Manager并且結(jié)合 cpolar內(nèi)網(wǎng)穿透工具實(shí)現(xiàn)遠(yuǎn)程訪問管理界面,同等,當(dāng)我們使用Nginx Proxy Manager配置其他本地服務(wù),并且需要遠(yuǎn)程訪問,也是同樣的方式,需要的朋友可以參考下2023-09-09
nginx實(shí)現(xiàn)負(fù)載均衡和動(dòng)靜分離
這篇文章主要為大家詳細(xì)介紹了nginx實(shí)現(xiàn)負(fù)載均衡和動(dòng)靜分離,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
詳解Prometheus 抓取 nginx 訪問日志的指標(biāo)
通過結(jié)合NGINX Exporter, Fluentd, Prometheus和Grafana, 可有效監(jiān)控并可視化NGINX中的4xx和5xx狀態(tài)碼日志,首先使用Fluentd收集和解析NGINX日志,再通過Prometheus抓取Fluentd暴露的指標(biāo),本文介紹Prometheus抓取nginx訪問日志的指標(biāo),感興趣的朋友一起看看吧2024-10-10
詳解nginx前端根據(jù)$remote_addr分發(fā)方法
這篇文章主要介紹了詳解nginx前端根據(jù)$remote_addr分發(fā)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
配置Nginx出現(xiàn)403(Forbidden)靜態(tài)文件加載不出來的解決方法
本文主要介紹了配置Nginx出現(xiàn)403(Forbidden)靜態(tài)文件加載不出來的解決方法,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12
Nginx代理proxy pass配置去除前綴的實(shí)現(xiàn)
這篇文章主要介紹了Nginx代理proxy pass配置去除前綴的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10

