如何设置Nginx的proxy_read_timeout、proxy_connect_timeout,解决报错(111: Connection refused) while connecting to upstream
时间: 2024-09-23 13:14:03 浏览: 58
Nginx中的`proxy_read_timeout`和`proxy_connect_timeout`是用来配置代理服务器连接上游服务器的时间限制的。这两个参数分别控制了两个阶段:
1. `proxy_connect_timeout`: 当Nginx尝试连接到上游服务器(如反向代理到的应用服务器)时,如果超过这个时间限制还没有建立连接,Nginx会返回504 Gateway Timeout错误。
2. `proxy_read_timeout`: 这个参数是在已经建立了连接之后,等待从上游服务器接收数据的时间限制。如果在此期间没有接收到数据,Nginx同样会关闭连接并返回相应错误。
如果你遇到"111: Connection refused"的错误,这通常意味着Nginx无法成功连接到指定的服务器。解决这个问题的方法包括:
- 检查上游服务器地址是否正确,以及它们是否正在运行。
- 确保防火墙规则允许Nginx访问上游服务器。
- 调整上述两个超时时间,确保它们大于实际通信所需的时间。例如,增加`proxy_connect_timeout`,并确保它不会太大导致无谓的等待。
- 如果使用的是动态IP或负载均衡,检查Nginx配置文件中是否有正确的池配置。
下面是修改这两个超时时间的基本示例(假设你的Nginx配置在一个名为`nginx.conf`的文件中):
```nginx
http {
proxy_connect_timeout 60s; # 设置连接超时时间为60秒
proxy_read_timeout 300s; # 设置读取超时时间为5分钟
...
}
```
完成后,记得重启Nginx服务使之生效:
```sh
sudo service nginx restart
```
阅读全文