我对 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;
}
}