特殊的 NGinx / PHP5-FPM 行为

特殊的 NGinx / PHP5-FPM 行为

我对 Nginx 还很陌生,但或多或​​少可以通过 PHP5-FPM 让它工作。

我想要做的是:让 Nginx 为服务器上位于 /var/www/example.com/ 目录上方的每个 PHP 文件调用 PHP5-FPM 解析器。这种方法可行,但有一个重大缺陷。

http://example.com或者https://example.com(无论是否使用 index.php 或 test.php),文件都以纯代码形式下载。如果我稍微调整一下配置,就可以将其解析为纯文本/html。

因此,似乎 PHP5-FPM 解析器根本没有被调用来处理 URL http(s)://example.com,而它似乎可以按预期处理 http(s)://www.example.com

这个问题对我来说似乎毫无意义,但也许是我错过了一些非常明显的东西 - 或者 NGinx PHP 正则表达式有问题。

因此,如能得到任何提示/暗示/建议,我们将非常感激。

upstream php {
  server unix:/var/run/example.com.socket;
}

server {
    # none-SSL php/fastcgi
    listen       80;
    server_name  example.com www.example.com;
    access_log   /var/log/nginx/example.com.access.log;
    root         /var/www/example.com/;
    index index.php;

    location ~ \.php$ {
      fastcgi_pass   php; #127.0.0.1:1025;
    }

    location / {
       try_files $uri $uri/ /index.php?$args;
    }
    return 301  https://www.example.com$request_uri; # Redirect to SSL
}

server {
    # SSL php/fastcgi
    server_name  example.com www.example.com;
    root         /var/www/example.com/;
    listen 443 ssl default_server;
    index index.php;

    ssl    on; # Force SSL

    ssl_certificate        /etc/ssl/example.com/fullchain.pem; # cert.pem + chain.pem bundle
    ssl_certificate_key    /etc/ssl/example.com/privkey.pem;

    access_log  /var/log/nginx/example.com.log;
    error_log /var/log/nginx/example.com.error.log;

    location ~ \.php$ {
        fastcgi_pass php;
        include         fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
        fastcgi_param   HTTPS              on;
        fastcgi_param   HTTP_SCHEME        https;
    }


    location / {
       try_files $uri $uri/ /index.php?$args;
    }
}

相关内容