Nginx在php5-fpm设置上抛出502坏网关

时间:2014-08-23 20:06:06

标签: nginx php

这是我的设置详情

Nginx.conf

user  nginx;
worker_processes  8;

error_log  /var/log/nginx/error.log warn;
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  65;

    #gzip  on;


    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

}

我的conf文件,文件名默认为sites-available和sites-enabled

server {
    server_name www.subdomain.mywebsite.com subdomain.mywebsite.com;
    access_log /srv/www/subdomain.mywebsite.com/logs/access.log;
    error_log /srv/www/subdomain.mywebsite.com/logs/error.log;
    root /srv/www/subdomain.mywebsite.com/public_html;

    location / {

        index index.html index.htm index.php;
    }


    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_FILENAME /srv/www/subdomain.mywebsite.com/public_html$fastcgi_script_name;
    }
}

当我通过我的域运行html文件时,它的工作正常。

但如果我去php文件,例如

subdomain.mywebsite.com/info.php

它给出了这个502 nginx的错误网关错误

发生问题时,

Php5-fpm正在运行

root@ubuntu:/etc/nginx/sites-available# service php5-fpm status
php5-fpm start/running, process 12196

1 个答案:

答案 0 :(得分:0)

这是典型响应的工作方式:向Nginx发送请求,Nginx代表客户端浏览器将该请求发送给PHP-FPM; PHP-FPM使用其评估的代码进行响应,然后将该响应发送回Nginx。在你的情况下,这仍然发生。问题是PHP-FPM没有发送你想要的结果。你想要对代码进行评估,但是它却说它无法读取代码,或多或少,所以它告诉Nginx它已经愚弄了,所以Nginx告诉客户端浏览器“网关”(上游服务器,是PHP) -FPM)正在冲洗;也就是说,它向客户端浏览器发送一个502响应,因为它无法向空白的老板展示。

这是什么意思?

毫不奇怪,这意味着权限是错误的。权限阻止PHP-FPM做它的事情。查找PHP-FPM的www.conf文件,并调整listen.ownerlisten.grouplisten.modeusergroup设置。另外,只需使用一个插座。这是在同一个地方配置的。实际上,我刚刚列出的权限设置只适用于套接字。不过,如果你想继续在监听端口上运行Nginx,它仍然是一个权限问题。

您的日志很容易说明这一点。你真的调查过这个问题吗?搜索引擎可能会被与此信息相关的结果所淹没。