Nginx 是一款高性能、輕量級的 Web 服務器,常常與 PHP 搭配使用來提供動態網頁服務。對于初學者來說,如何正確地配置 Nginx 和 PHP 是一個挑戰。本文將介紹如何在 Nginx 中正確設置 PHP,并提供一些示例代碼。
首先,需要在 Nginx 中啟用 PHP。在 Nginx 的配置文件中,可以添加以下代碼:
location ~ \.php$ { fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }這段代碼將 PHP 的請求傳遞給 php-fpm 服務器。其中,fastcgi_pass 指定了 php-fpm 的 Unix 域套接字地址,fastcgi_index 設置了默認的索引文件為 index.php,include fastcgi_params 加載了一些 FastCGI 參數,fastcgi_param SCRIPT_FILENAME 設置了 PHP 腳本的文件名。 如果要在 Nginx 中使用 PHP-FPM,還需要對 PHP-FPM 進行配置。在 PHP-FPM 的配置文件中,可以添加以下代碼:
listen = /run/php/php7.4-fpm.sock listen.owner = www-data listen.group = www-data listen.mode = 0660 user = www-data group = www-data pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3這段代碼將 PHP-FPM 監聽在 Unix 域套接字 /run/php/php7.4-fpm.sock 上,并設置了所屬用戶和組為 www-data,權限為 0660。user 和 group 設置了 PHP-FPM 主進程的運行用戶和組。pm 設置了 PHP-FPM 的進程管理方式,并設置了最多同時啟動 5 個進程,初始啟動 2 個進程,最少啟動 1 個進程,最多空閑 3 個進程。 在設置 PHP-FPM 時,還需要注意錯誤處理。可以在 PHP-FPM 的配置文件中添加以下代碼:
php_flag[display_errors] = off php_admin_flag[log_errors] = on php_admin_value[error_log] = /var/log/php-fpm.log這段代碼將關閉在瀏覽器上顯示 PHP 錯誤,并將錯誤日志記錄在 /var/log/php-fpm.log 中。 在配置 Nginx 和 PHP 時,還需要考慮一些常見的問題。例如,如果需要使用 Nginx 的 rewrite 功能,可以在 Nginx 的配置文件中添加以下代碼:
if (!-e $request_filename) { rewrite ^/(.+)\.php$ /$1.php last; rewrite ^/(.*)/$ /$1/index.php last; }這段代碼將重寫 PHP 文件的地址,允許用戶在瀏覽器中輸入帶 .php 擴展名的 URL,并將以 / 結尾的 URL 重定向到 index.php 文件。 總結起來,對于大多數情況,正確設置 Nginx 和 PHP 的步驟如下: 1.在 Nginx 的配置文件中啟用 PHP 并傳遞請求給 PHP-FPM。 2.在 PHP-FPM 的配置文件中確保正確設置監聽 Unix 域套接字、用戶和組、權限以及進程管理方式等參數。 3.確保正確處理 PHP 錯誤,并將錯誤記錄在日志中。 4.根據需要設置 Nginx 的 rewrite 功能。 當然,實際設置時,還需要考慮到具體的業務需求和服務器配置。希望本文能夠對您有所幫助,祝您愉快地玩轉 Nginx 和 PHP。