Nginx+PHP服務器運行原理初探

Nginx服務器起到的作用

服務器分爲兩類:

  • 前端服務器。負責HTTP請求的解析與轉發,或者處理靜態請求。輕量級,併發量高,常常用作反向代理、負載均衡等。說白了,就是負責請求發到哪裏,或者取現成的文件之類的。
  • 應用服務器。負責調用某一種語言的解釋器,或某種語言寫的、已經編譯好的程序,接收HTTP請求中的各個參數,按照開發者的意圖做出動作,並生成結果返回給調用方。

Nginx一般用作前端服務器,解析HTTP請求,並把請求傳遞到下一個地方(下一臺服務器,或者是應用服務器程序,或者是……)。

FastCGI

CGI,全稱Common Gateway Interface,是應用服務器語言相關的處理程序之間的接口。 
處理程序實現這個接口,應用服務器調用這個接口,傳入HTTP中的各參數(方法,URL,表單……),實現動態請求。不過這麼做也有個缺點,每次收到請求時,應用服務器都要新建一個進程,調用處理程序,使用完之後就結束這個進程。進程的建立與釋放都比較消耗資源,因此這麼做的效率並不高。 
FastCGI是對CGI的改進,它隨着Nginx服務一同啓動並駐留內存,當請求到達時,處理之,處理完之後並不結束這個進程,而是繼續等待下一次連接。

PHP-fpm與PHP-cgi

PHP-cgi是PHP語言的解釋器。按照最初的模式的話,每次請求到達,都要開一個新的進程啓動PHP-cgi,重新載入配置、數據結構,初始化運行環境。更新PHP配置之後,需要重啓PHP-cgi,配置才能生效。 
而PHP-fpm是PHP一個實現了FastCGI的管理器,常駐內存,負責管理各PHP-cgi進程,可以提升運行效率,並實現平滑重啓。

如何在機器上配置PHP-fpm

nginx.conf文件中,php相關的location塊中配置fastcgi_pass,指向php-fpm監聽的端口。 
php-fpm的配置文件中,監聽某個端口。貌似配置文件中默認都是127.0.0.1:9000

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章