頻道欄目
首頁 > 資訊 > 其他 > 正文

nginx和php-fpm的關系講解

18-01-10        來源:[db:作者]  
收藏   我要投稿

對于人來說可以感知到,但服務器感知不到,我們叫他正向代理服務器。

反向代理訪問百度 中間有個負載代理服務器

對于人來說不可感知,但對于服務器來說是可以感知的,我們叫他反向代理服務器

而nginx就是一個高性能的http和反向代理服務器,也是一個IMAP/POP3/SMTP服務器

Php-fpm:php-Fastcgi Process Manager. PHP的FastCGI進程管理器

要想知道什么是PHP-fpm,首先要知道什么是fastcgi,更要知道什么是cgi

Cgi 通用網關接口,Web 服務器運行時外部程序(php,python)的規范

Web服務器早期只處理html靜態文件,當php等動態語言出現后處理不了,就需要使用各個動態語言的解釋器,那么解釋器和web服務器之間的通信標準或者協議或者接口就是cgi。每次php文件的訪問都會復刻出一個進程進行處理

Fastcgi 常駐型的cgi,只要激活后,一直執行,不會每次都要花費時間去fork一次(這是CGI最為人詬病的fork-and-execute 模式)。

php-fpm是 FastCGI 的實現,并提供了進程管理的功能。

進程包含 master 進程和 worker 進程兩種進程。

master 進程只有一個,負責監聽端口,接收來自 Web Server 的請求,而 worker 進程則一般有多個(具體數量根據實際需要配置),每個進程內部都嵌入了一個 PHP 解釋器,是 PHP 代碼真正執行的地方。

還有如果在PHP-FPM管理下的某個FastCGI進程掛了,PHP-FPM會根據用戶配置來看是否要重啟補全,PHP-FPM更像是管理器,而真正銜接Nginx與PHP的則是FastCGI進程

fastcgi_pass所配置的內容,便是告訴Nginx你接收到用戶請求以后,你該往哪里轉發

那么nginx和php-fpm到底是怎么工作的呢。請聽下回分解。

上面通過nginx定義我們知道,Nginx不只有處理http請求的功能,還能做反向代理。

下面是我畫的一個簡單的流程圖

1. 客戶端通過http協議訪問網站域名

2. Nginx接受請求,并路由轉到index.php

3. 加載fastcgi模塊

4. Fastcgi監聽127.0.0.1:9000地址

5. 然后訪問到達127.0.0.1:9000

6. php-fpm監聽127.0.0.1:9000,也就接收到了請求

7. Fpm的master主進程,分配子進程去處理請求

8. 處理完成后,返回結果給nginx

9. Nginx通過http協議響應給客戶端

Nginx負責承載HTTP請求的響應與返回,以及超時控制記錄日志等HTTP相關的功能,而PHP則負責處理具體請求要做的業務邏輯,它們倆的這種合作模式也是常見的分層架構設計中的一種,在它們各有專注面的同時,FastCGI又很好的將兩塊銜接,保障上下游通信交互

查看fpm進程,可分為主進程和子進程

ps -ef | grep fpm

相關TAG標簽
上一篇:微信小程序訪問webService(Java)詳細教程
下一篇:微信小程序開發之圖片上傳教程
相關文章
圖文推薦

關于我們 | 聯系我們 | 廣告服務 | 投資合作 | 版權申明 | 在線幫助 | 網站地圖 | 作品發布 | Vip技術培訓 | 舉報中心

版權所有: 紅黑聯盟--致力于做實用的IT技術學習網站

美女MM131爽爽爽毛片