Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Nginx 同時運行多版本 PHP-FPM:端口區隔配置法

編輯:系統常見問題解答

同一台伺服器需支援不同專案使用不同 PHP 版本(如 PHP 5.6 與 PHP 7.4),最簡單做法是讓各版本 PHP-FPM 監聽不同埠,Nginx fastcgi_pass 對應導向。

PHP-FPM 端口修改

# 編輯 php-fpm.conf(或 www.conf 池設定)
# 找到 listen 指令
listen = 127.0.0.1:9000   # 預設

# 修改為不同埠,例:
# PHP 5.6 → 9000
# PHP 7.4 → 9001
# PHP 8.1 → 9002

修改後重啟對應的 php-fpm 服務。

Nginx 虛擬主機對應配置

# 專案 A 使用 PHP 5.6
server {
    listen 80;
    server_name project-a.local;
    root /var/www/project-a;

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;  # 對應 PHP 5.6
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

# 專案 B 使用 PHP 7.4
server {
    listen 80;
    server_name project-b.local;
    root /var/www/project-b;

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9001;  # 對應 PHP 7.4
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

驗證步驟

  1. 各 PHP-FPM 進程是否監聽正確埠:netstat -tlnp | grep php-fpm
  2. Nginx 配置測試:nginx -t
  3. 重載 Nginx:nginx -s reload
  4. 各站點建立 phpinfo() 頁面確認 PHP 版本

進階替代方案

  • Unix Socket:listen = /var/run/php5.6-fpm.sock,效能略優於 TCP,但需注意權限
  • Docker 容器化:每專案獨立容器內建特定 PHP 版本,徹底隔離,現代部署首選
  • PHP-FPM 多池:單一 PHP 版本下建立多池隔離使用者/資源

端口區隔法配置最快、改動最小,適合輕量級多版本共存需求;長期專案建議朝容器化遷移。

Copyright © Windows教程網 All Rights Reserved