获取错误502而不是在nginx + php-fpm上显示错误

时间:2014-01-17 20:54:06

标签: nginx php

我已经尝试了一切,我仍然无法在浏览器上显示错误,我正在使用nginx,php-fpm和centOS 6.4

nginx.conf

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}

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

这是我在conf.d中的nginx配置

server {
listen       80;
server_name  localhost;
root /server/public;
index run.php;


location / {
    try_files $uri $uri/ /run.php;
}

location ~ \.php$ {
    fastcgi_index   run.php;
    fastcgi_pass    127.0.0.1:9000;
    include         fastcgi_params;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

php-fpm config

catch_workers_output = yes
php_flag[display_errors] = on
php_admin_flag[log_errors] = on

的php.ini

display_errors = on
log_errors = on

我在启用了NAT的虚拟机上运行CentOS 6.4,如果我从服务器内部卷曲localhost我得到了正确的错误但是如果我从服务器外部的浏览器访问该站点我得到502错误的网关错误,如果我正在加载的页面没有错误一切正常,我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

如果你想知道为什么会收到这个错误,我可以给你一些提示。

错误502意味着网关不好,意味着nginx尝试代理的php服务器没有响应,可能是因为php5-fpm没有收听端口9000并且它正在使用sock文件,或者可能是php根本没有运行(如果所有的php文件都不工作)

为什么你从curl和浏览器得到不同的响应?,因为你的服务器定义为localhost我假设这两种方法都没有被不同的服务器块捕获。

修复此问题的正确方法是检查活动虚拟主机和php5-fpm listen config,

我认为安装新的PHP修复此问题可能是因为它将旧的配置文件覆盖为使用nginx配置的新配置文件。

但无论如何,我只是试图给你一些提示,看看你将来是否会发现类似的问题。

答案 1 :(得分:0)

看起来这是我的php(5.3)版本失败了,更新到PHP 5.5后它开始工作