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 错误网关”的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu 16.04、nginx、phpmyadmin - 502 错误网关
AWS ElasticBeanstalk 上的 502 错误网关 Nginx 节点