连接上游时出现nginx:connect()失败(111:连接被拒绝)的错误。

92

尝试部署我的第一个门户网站。

当我通过浏览器发送请求时,浏览器显示502网关超时错误。

当我检查日志时,发现了这个错误。

 2014/02/03 09:00:32 [error] 16607#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 14.159.131.19, server: foo.com, request: "GET HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "22.11.180.154"

是否有与权限相关的问题?


3
请提供更多信息以帮助理解问题,例如您的配置、您所做的事情、哪些链接已经失效、是否有任何链接可以正常工作等。 - Mohammad AbuShady
2
我的问题已经解决了...我没有在服务器上安装PHP。 - Abhishek Tripathi
See: https://dev59.com/omUo5IYBdhLWcg3wrhBD - positiveman
@lucky 所以我认为最好关闭这个问题。 - Farshid Ashouri
4个回答

105

我觉得那个解决方案本来就行不通,因为你会在错误日志文件中看到一些错误信息。

解决方案比我想象的要简单得多。

简单地打开以下路径到你的php5-fpm即可。

sudo nano /etc/php5/fpm/pool.d/www.conf

或者,如果您是管理员“root”

nano /etc/php5/fpm/pool.d/www.conf

然后找到这一行并将其注释取消:

listen.allowed_clients = 127.0.0.1

这个解决方案将使您能够在虚拟主机块中使用listen = 127.0.0.1:9000

像这样:fastcgi_pass 127.0.0.1:9000;

修改后,您只需要重新启动或重新加载Nginx和Php5-fpm即可。

Php5-fpm

sudo service php5-fpm restart
或者
sudo service php5-fpm reload

Nginx

sudo service nginx restart
或者
sudo service nginx reload

来自评论:

还有一条评论

;listen = /var/run/php5-fpm.sock 

并增加

listen = 9000

31
"listen = 9000" 和 ";listen = /var/run/php5-fpm.sock" 的意思是监听端口号为9000,或者监听Unix域套接字"/var/run/php5-fpm.sock"。 - n611x007
1
在CentOS 7上,这个文件在 /etc/php-fpm.d/www.conf。我必须添加listen = 9000并注释掉 listen = /var/run/php-fpm/php-fpm.sock - junkie
2
为什么不将NGINX配置更改为使用套接字而不是localhost:9000?通过将fastcgi_pass行更改为"astcgi_pass unix:/run/php/php7.0-fpm.sock; - KNejad

1

当我在NGINX配置文件中写入两个上游时,遇到了相同的问题。

upstream php_upstream {
    server unix:/var/run/php/my.site.sock;
    server 127.0.0.1:9000;
}

...

fastcgi_pass php_upstream;

但是在/etc/php/7.3/fpm/pool.d/www.conf中,我只监听了socket。

listen = /var/run/php/my.site.sock

所以我只需要套接字,没有任何127.0.0.1:9000,我只删除了IP+端口上游。
upstream php_upstream {
    server unix:/var/run/php/my.site.sock;
}

这句话的意思是“这可以在没有上游的情况下重写”,保留HTML格式不解释。
fastcgi_pass unix:/var/run/php/my.site.sock;

0

我在Centos 8中遇到了同样的问题。

在文件/etc/nginx/default.d/php.conf中,我只需更改以下行即可,然后它就完美地工作了。

#orignal line
fastcgi_pass 127.0.0.1:9000;

#replaced with
fastcgi_pass unix:/run/php-fpm/www.sock;

0

这可能对某些人有用:

如果您在Mac上安装了多个PHP版本,例如8.0和7.4,并且尝试了几个选项仍然出现502网关错误,则可以尝试检查您的valet如何连接您的PHP版本和Nginx。

从终端运行valet use php@7.4(如果这是您使用的版本)。当前版本将被取消链接,新版本将被链接,然后Nginx和php@7.4将被重新启动。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接