【问题标题】:502 Bad Gateway errors when I try to enable php in nginx当我尝试在 nginx 中启用 php 时出现 502 Bad Gateway 错误
【发布时间】:2016-05-27 17:25:10
【问题描述】:

我一直在尝试让 php 脚本在我的 Ubuntu 12.04/nginx 服务器上运行。我知道 12.04 已经过时了,但我被困在那里了。

我已经看到 nginx/sites-available 文件有大量不同的配置。我已经尝试了很多。我还尝试将 php 切换为监听不同的端口(我随机选择了 8889 和 9001),我在该文件和 etc/php5/fpm/pool.d/www.conf 中都设置了。

我想指出,当我 apt-get install php5-fpm 时,我注意到这个警告: update-rc.d:警告:php5-fpm 停止运行级别参数(0 1 6)不匹配 LSB 默认停止值(无)

但是,它似乎并不表明 fpm 已经失败并且还有更多(安装输出中该行下方的非警告/错误输出)。

我还想提一下,这个服务器还在另一个虚拟主机上运行 python django 环境,它也监听端口 9000,但我认为这没关系,因为它们都是 nginx 进程?而且,就像我提到的,我尝试更改 php 的端口,但并没有解决问题。

我试图运行的脚本唯一要做的就是打印 hello world,所以那里应该没有问题。

这是我的 nginx/sites-available/myvirtualhost 配置文件(你可以看到我的许多不同的 php 配置被注释掉了 - 最上面的一个来自我的 sites-available/default 文件(在那里注释掉并且默认在站点中没有链接-启用):

    server {
        listen 80;
        listen [::]:80;
#
        server_name mag.somedomain.com;
#
        root /var/www/mag.somedomain.com/public_html;
        index index.html;
#
        location / {
                try_files $uri $uri/ =404;
        }
        #location ~ \.php$ {
        #        include snippets/fastcgi-php.conf;
        #
        #       # With php5-cgi alone:
        #        fastcgi_pass 127.0.0.1:9000;
        #       # With php5-fpm:
        #       fastcgi_pass unix:/var/run/php5-fpm.sock;
        #}
        #location ~ \.php$ {
        #       fastcgi_split_path_info ^(.+\.php)(/.+)$;
        #       fastcgi_pass 127.0.0.1:9000;
        #       fastcgi_index index.php;
        #       include fastcgi_params;
        #}
        location ~ \.php$ {
                include /etc/nginx/fastcgi_params;
                fastcgi_pass  127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME /var/www/mag.somedomain.com/public_html/$fastcgi_script_name;
        }
}

当我查看 nginx/error.log 时(当端口设置为 9000 时):

2016/05/27 17:16:14 [error] 10689#0: *150 upstream sent unsupported FastCGI protocol version: 72 while reading response header from upstream, client: 99.3.19.77, server: mag.somedomain.com, request: "GET /version.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "mag.somedomain.com"

如果我更改端口,我会得到一个空白网页(而不是 502),并且错误日志中没有任何内容。

当我使用 netstat 查看我收到的内容时(还有一些其他端口也被监听):

tcp        0      0 127.0.0.1:8801          0.0.0.0:*               LISTEN      26768/python    
tcp        0      0 127.0.0.1:8802          0.0.0.0:*               LISTEN      8444/python     
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      10686/nginx -g daem

有人知道我需要做什么吗?我已经在这个问题上打了好几个小时了。

【问题讨论】:

  • 如果我没有误解,您的 nginx 正在侦听该端口?您的 php-fpm 配置对您尝试代理的池有什么说明?你确定它 100% 在监听 9000 端口吗? sudo lsof -i :9000,如果没有说 php-fpm,那么你就是从 nginx 代理到 nginx。

标签: php nginx ubuntu-12.04


【解决方案1】:

好的,事实证明它确实是 9000 端口。我猜我尝试的两个备用端口不能使用(8999 和 9001)。当我检查 php5-fpm 错误日志时,它说端口 9000 已经在使用中。所以我选择了另一个随机端口——这次是 8070——我的 hello world 脚本神奇地工作了。去图吧。

【讨论】:

    猜你喜欢
    • 2017-09-01
    • 1970-01-01
    • 2021-08-07
    • 2018-10-30
    • 2021-08-03
    • 2018-11-12
    • 2018-04-23
    • 2017-06-29
    • 2019-09-15
    相关资源
    最近更新 更多