我对NGINX有个很奇怪的问题。
我有下面的upstream.conf
文件,其上游代码如下:
upstream files_1 {
least_conn;
check interval=5000 rise=3 fall=3 timeout=120 type=ssl_hello;
server mymachine:6006 ;
}
在locations.conf中:
location ~ "^/files(?<command>.+)/[0123]" {
rewrite ^ $command break;
proxy_pass https://files_1 ;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
在/etc/主机中:
127.0.0.1 localhost mymachine
当我这样做时:wget https://mynachine:6006/alive --no-check-certificate
,我得到了HTTP request sent, awaiting response... 200 OK
。我还验证了端口6006正在使用netstat进行侦听,并且没有问题。
但是当我向NGINX文件服务器发送请求时,我得到了以下错误:
连接到上游时没有实时上游,客户端:..,请求:“POST /文件/保存/2 HTTP/1.1,上游:“https://files_1/save“
但上游还可以,到底出了什么问题?
3条答案
按热度按时间omjgkv6w1#
当定义
upstream
时,Nginx处理目标服务器和一些可以启动或关闭的服务器。Nginx根据fail_timeout
(默认为10s)和max_fails
(默认为1)来决定上游服务器是否关闭因此,如果有几个慢请求超时,Nginx可以判断上游服务器宕机了,因为只有一个,整个上游服务器实际上宕机了,Nginx报告
no live upstreams
。https://docs.nginx.com/nginx/admin-guide/load-balancer/http-health-check/
我有一个类似的问题,你可以防止这个覆盖这些设置。
例如:
r6vfmomb2#
我遇到了相同的错误
no live upstreams while connecting to upstream
我的是SSL相关的:加上
proxy_ssl_server_name on
就解决了。but5z9lq3#
如果你使用的是docker-compose设置,你必须在url中使用服务名称而不是IP,例如: