如果你是一個web開發者,那么你一定知道nginx的名字。nginx是一個高性能的HTTP和反向代理服務器,雖然它很多不同的用途,但最常見的用途是作為一個Web服務器來使用。在動態Web頁面中,PHP是最常用的語言之一。那么nginx是怎樣運作PHP的呢?
基本上,nginx可以使用三種不同的方法來運行PHP,它們是:
1. 使用FastCGI模塊運行PHP 2. 使用PHP-FPM運行PHP 3. 直接使用PHP作為一個nginx模塊
下面我將對這三種方法進行詳細的解釋。
FastCGI模塊運行PHP
使用FastCGI模塊的方式是在nginx配置文本修改fastcgi_pass配置記錄。快速CGI是一種通信協議,允許nginx與PHP進程之間進行通信。使用此方法,PHP運行在一個獨立的進程中,nginx作為web服務器向PHP進程請求數據。這種方法的主要優點是在于高度的可伸縮性和快速性。
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; # PHP-FPM 運行在TCP 端口 9000 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
使用PHP-FPM運行PHP
PHP-FPM是FastCGI進程管理器,可以直接由PHP進行管理。與FastCGI模塊不同的是,使用PHP-FPM時,nginx與PHP-FPM通信,而不是與PHP本身通信。PHP-FPM允許為每個站點配置獨立的PHP線程,該線程僅為該站點提供服務,這種方法對于大型網站的可伸縮性和性能提高有很大的優勢。
location ~ \.php$ { fastcgi_pass unix:/run/php-fpm/php-fpm.sock; # PHP-FPM 運行在本地 Socket fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
直接使用PHP作為一個nginx模塊
利用nginx的modules模塊作為PHP處理器并不是接受的常規方法。雖然這種方法看起來很有前途,但它并不是特別實用。這種方法需要重新編譯nginx,這可能會很麻煩,尤其是在多個站點中運行不同版本的PHP的情況下。
location ~ \.php$ { php; }
總之,使用這三種方法之一,nginx可以正確地運行PHP。開發人員可以根據他們的需求選擇他們認為最適合他們的方法。
上一篇nginx無法解析php
下一篇nginx機制php