nginx php-fpm 空站点

nginx php-fpm 空站点

我写这篇文章是因为我整晚都在努力修复它。

我们最近迁移到了一台新服务器。迁移之前,我们一直在 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;
}

相关内容