我写这篇文章是因为我整晚都在努力修复它。
我们最近迁移到了一台新服务器。迁移之前,我们一直在 nginx + cgi(脚本)上运行我们的网站。迁移后,我们决定尝试 apache + mod_php。这相当糟糕,我想迁移回 nginx,但这次我想使用 php-fpm(因为人们说它很酷)
因此,我确实遵循了一些指南,我认为我做的一切都是正确的。此外,我还有“服务器”部分的旧配置文件,我已对其进行了检查并将其放入新配置中。
因此,当我输入我们的 URL 时,网站最终变成空白。(所谓空白,是指空白页,没有字母、错误或任何内容。)访问日志中有一些奇怪的错误,例如:
123.242.148.54 - - [22/Mar/2012:06:08:11 +0200] "-" 400 0 "-" "-"
我猜测 php-fpm 没有工作,但不确定如何确认。
也许有人能帮上忙?我将不胜感激。
我的 nginx 配置:
user nginx;
worker_processes 12;
error_log /var/log/nginx/error.log;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;
pid /var/run/nginx.pid;
events {
worker_connections 4096;
}
http {
include /etc/nginx/mime.types;
#default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
fastcgi_buffer_size 256k;
fastcgi_buffers 4 256k;
server {
listen 80;
server_name www.example.com;
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/error.log;
root /home/www/example;
index index.php;
client_max_body_size 50M;
#error_page 404 /404.html;
# phpMyAdmin
location /phpmyadmin {
root /usr/share/;
error_log /var/log/nginx/phpmyadmin.log;
try_files $uri $uri/ /index.php;
}
location ~ ^/phpmyadmin/.*\.php$ {
root /usr/share/;
error_log /var/log/nginx/phpmyadmin.log;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
}
# Munin
location /monitoring {
root /var/www/;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/conf.d/monitoring_users;
error_log /var/log/nginx/monitoring.log;
index index.html;
}
# The site
location / {
try_files $uri $uri/ /index.php/?$uri&$args;
}
# PHP interpreter
location ~ \.php {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
}
}
答案1
如果有任何错误,您应该检查 error.log 而不是 access.log。
除非你的 fastcgi_params 中已经有了该参数,否则你应该添加:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
即你的 php 部分应如下所示:
# PHP interpreter
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
}