You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx配置多Location指向不同根目录时php-fpm识别失败求助

解决Nginx多Location不同根目录下PHP-FPM不识别的问题

我来帮你搞定这个Nginx配置的问题!这种多站点不同根目录配合PHP-FPM的场景很常见,核心问题通常是PHP-FPM的SCRIPT_FILENAME没有正确指向第二个location的实际文件路径,尤其是用alias的时候容易踩路径拼接的坑。下面是经过验证的完整解决方案:

正确的Nginx配置示例

server {
    listen 80;
    server_name your-domain.com;

    # 主站点根目录
    root /var/www/main-site;
    index index.php index.html;

    # 主站点的PHP处理规则
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock; # 替换成你的PHP-FPM套接字路径
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # /mailtracker 路径的独立配置
    location ^~ /mailtracker {
        # 注意alias结尾的斜杠!必须和目标目录的结构匹配
        alias /var/www/sites/mailtracker/web/;
        index index.php index.html;

        # 为这个location单独配置PHP处理规则
        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass unix:/run/php/php8.2-fpm.sock;
            fastcgi_index index.php;
            # 关键:用$request_filename替代$document_root$fastcgi_script_name
            # 因为alias会改变路径上下文,$request_filename会自动生成正确的文件路径
            fastcgi_param SCRIPT_FILENAME $request_filename;
            include fastcgi_params;
        }
    }
}

核心注意点解释

  • ^~修饰符:确保/mailtracker的location优先匹配,避免被主站点的PHP正则规则抢先匹配,导致路径错误。
  • alias的斜杠细节:如果目标目录是/var/www/sites/mailtracker/web/,结尾的斜杠必须加上,否则Nginx会把/mailtracker当作目录名的一部分拼接路径,比如变成/var/www/sites/mailtracker/webmailtracker/,直接导致文件找不到。
  • PHP路径参数的区别:在alias的location里绝对不能用$document_root$fastcgi_script_name,因为$document_root还是主站点的根目录,而$request_filename会自动结合alias的配置生成正确的实际文件路径。
  • 独立的PHP处理块:每个不同根目录的location都需要自己的PHP规则块,不能复用主站点的,否则路径上下文会混乱。

验证配置的步骤

  1. 先检查Nginx配置是否合法:
    sudo nginx -t
    
  2. 验证通过后重启Nginx生效:
    sudo systemctl restart nginx
    
  3. 如果还有问题,查看PHP-FPM的日志排查:
    tail -f /var/log/php8.2-fpm.log # 替换成你的PHP版本对应的日志路径
    
    日志里如果出现“File not found”的错误,重点检查alias的路径和SCRIPT_FILENAME的参数设置。

内容的提问来源于stack exchange,提问作者Fernando André

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:10:34