nginx是一款高性能的Web服務器,常被用來作為前端反向代理并緩存靜態文件。但是在現代Web應用中,動態腳本語言的支持不可或缺。因此,本文將介紹如何使用nginx來引入PHP語言。
最常見的方式是使用PHP FastCGI Process Manager (PHP-FPM)。它是一個用C編寫的FastCGI服務,專門為處理PHP應用程序而設計。下面是如何啟用PHP-FPM支持:
# 安裝PHP-FPM sudo apt-get install php-fpm # 配置nginx.conf location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
在上述代碼中,我們為`.php`后綴的文件創建了一個location塊。`try_files $uri =404`指示nginx只有在找不到相應文件時才會進行請求。`fastcgi_pass`是向PHP FastCGI Process Manager發送請求的地址,這里使用Unix套接字文件來提高性能。`fastcgi_index`告訴nginx在沒有指定文件名時使用的默認文件名。`fastcgi_param SCRIPT_FILENAME`是一個FastCGI變量,它告訴PHP-FPM要處理的文件路徑和名稱。最后,`include fastcgi_params`允許我們將其他FastCGI參數傳遞給PHP-FPM。
當我們將PHP-FPM添加到nginx后,我們可以輕松地在Web服務器上運行PHP應用程序。例如,我們想要在我們的服務器上運行WordPress站點。我們可以像下面這樣簡單地配置nginx站點:
server { listen 80; server_name example.com; root /usr/share/nginx/wordpress; index index.php; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
在上述代碼中,我們定義了一個名稱為`example.com`的虛擬主機。這個站點的根目錄是`/usr/share/nginx/wordpress`,它是WordPress站點的根目錄。我們還指定了默認的文件名為`index.php`。在`location /`塊中,我們告訴nginx使用try_files檢查請求的URI中是否有找到的文件。如果找不到,它將自動嘗試解析WordPress的入口文件,也就是`index.php`。
在`location ~ \.php$`塊中,我們告訴nginx,對于所有帶有`.php`擴展名的文件,使用PHP-FPM來處理它們。最后,我們使用`include fastcgi_params`,來傳遞除了`SCRIPT_FILENAME`以外的所有FastCGI變量值。
在本文中,我們介紹了如何使用nginx來引入PHP語言,以示例的方式進行說明。作為一個高性能Web服務器,nginx和PHP FastCGI Process Manager的組合是現代Web應用的標準配置。無論是擴展現有應用程序還是創建全新的Web應用程序,將nginx與PHP-FPM一起使用,都是一個可靠的選擇。