Nginx 声明“502 错误网关”

Posted

技术标签:

【中文标题】Nginx 声明“502 错误网关”【英文标题】:Nginx stating "502 Bad Gateway" 【发布时间】:2014-07-06 21:29:51 【问题描述】:

好的,我正在本地运行一个应用程序,名称为 homestead.app:8000。我正在运行 Vagrant,这只是在我执行“vagrant halt”以更改 nginx 的文档根目录然后 vagrant up 之后才开始发生的。

Nginx 正在向浏览器返回 502 Bad Gateway,我的测试域的错误日志如下:

2014/05/18 21:37:11 [crit] 1368#0: *7 connect() to unix:/var/run/php5-fpm.sock failed (2: No such file or directory ) 连接到上游时,客户端:10.0.2.2,服务器:homestead.app,请求:“GET / HTTP/1.1”,上游:“fastcgi://unix:/var/run/php5-fpm.sock:”,主机:“homestead.app:8000”

【问题讨论】:

这是否存在/var/run/php5-fpm.sock 不,它不存在,但我没有删除它。 尝试启动您的 PHP 吗? 你不要删除它 - 它是一个 unix 套接字,(因为它是 *​​nix),你可以作为路径访问,但它实际上是 php-fpm 的开放套接字。如果您的服务在您进行基本配置更改之前已全部设置好,最好的建议是:“您是否尝试过将其关闭再打开?”如果这不起作用,则通过 *** 进行调试可能需要一段时间。最好放在水壶上。 我在运行 Ubuntu 14.04 时使用 /etc/init.d/php5-fpm restart 重新启动。 【参考方案1】:

确保 php-fpm 正在运行。我有类似的问题,所以最后我将默认的 php-fpm 端口从 9000 更改为 8999 并从 nginx.conf 文件中踢出套接字信息(替换为主机和端口号)。就我而言,这是可行的:

location ~ \.php 
        fastcgi_pass 127.0.0.1:8999;
        fastcgi_index /index.php;

        include /usr/local/etc/nginx/fastcgi_params;

        fastcgi_split_path_info       ^(.+\.php)(/.+)$;
        fastcgi_param PATH_INFO       $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_read_timeout 600;
    

【讨论】:

为什么不实际使用文件套接字? @zerkms,是的,我们可以使用套接字(!),这是默认的 NGINX 推荐,请参阅 askubuntu.com/a/1161301/439867(这是一个 Wiki 答案 - 您可以编辑)。【参考方案2】:

检查您的 XAMPP 控制面板并关闭 Apache 和 mysql(如果它们正在运行)。并在终端vagrant up --provision 上运行。为我工作

【讨论】:

以上是关于Nginx 声明“502 错误网关”的主要内容,如果未能解决你的问题,请参考以下文章

nginx 和 SSL:502 错误网关

EC2 实例 (Nginx) 上的 502 错误网关错误

Ubuntu 16.04、nginx、phpmyadmin - 502 错误网关

AWS ElasticBeanstalk 上的 502 错误网关 Nginx 节点

Aurelia、Docker、Nginx、AWS Elastic Beanstalk 显示 502 错误网关

Nginx 正在将自定义 http 代码转换为 502 错误网关