nginx 是一款輕量級的高性能 Web 服務器軟件,許多開發者會選擇使用它作為代理服務器,而 PHP 作為一門主流的后端編程語言,也常被用于 Web 應用程序的開發中。在使用 nginx 與 PHP 時,一般有兩種運行模式:FastCGI 模式和 PHP-FPM 模式。
FastCGI 模式下,nginx 通過 FastCGI 協議與 PHP 進行通信。例如下面的 nginx 配置文件:
```
server {
listen 80;
server_name localhost;
location / {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /mnt/www$fastcgi_script_name;
include fastcgi_params;
}
}
```
其中,`fastcgi_pass` 指定了 PHP 運行的地址和端口,可以是本地地址或遠程地址。`fastcgi_index` 指定了默認的入口文件名。`fastcgi_param` 是傳遞的參數,`SCRIPT_FILENAME` 是 PHP 腳本的文件名。`fastcgi_params` 文件中包含了較為常用的 FastCGI 參數。
PHP-FPM 模式是在 FastCGI 模式之上的一種更加高級的運行模式。它使用了更加安全、可靠的 PHP-FPM 服務器來處理 PHP 請求。PHP-FPM 使用 Unix 套接字或 TCP/IP 等方式與 nginx 通信,如下所示:
```
server {
listen 80;
server_name localhost;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
}
```
其中,`fastcgi_pass` 利用 Unix 套接字與 PHP-FPM 服務器通信;`SCRIPT_FILENAME` 利用 `$realpath_root` 獲取 PHP 腳本的完整路徑。另外,`try_files` 指定了嘗試訪問 URI 的方式(比如 `http://example.com/about` 會嘗試訪問 `/about` 文件或目錄,如果不存在則嘗試訪問 `/index.php?about`)。這意味著當 URI 中沒有擴展名時,其會被視為由 PHP 處理的文件。
總之,在使用 nginx 和 PHP 進行 Web 開發時,需要了解以上兩種運行模式,結合實際需求進行選擇。FastCGI 模式簡單、高效,而 PHP-FPM 模式更加安全可靠,適用于高并發場景。
上一篇css3.0背景漸變
下一篇nginx php 運行