我对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 / hosts中:
127.0.0.1 localhost mymachine
当我这样做时:wget https://mynachine:6006/alive --no-check-certificate
,我得到HTTP request sent, awaiting response... 200 OK
。我还验证了端口6006正在使用netstat进行监听,并且没问题。
但是当我向NGINX文件服务器发送请求时,我收到以下错误:
连接上游时无上游,客户端:..,请求:&#34; POST / files / save / 2 HTTP / 1.1,上游:&#34; https://files_1/save&#34;
但上游还可以。有什么问题?
答案 0 :(得分:1)
定义upstream
时,Nginx会对目标服务器以及可以向上或向下的内容进行处理。 Nginx根据fail_timeout
(默认为10秒)和max_fails
(默认为1)确定您的上游是否已关闭
因此,如果您有一些缓慢的请求超时,Nginx可以确定您上游的服务器已关闭,并且因为您只有一个,整个上游有效关闭,Nginx报告no live upstreams
。这里解释得更好:
https://docs.nginx.com/nginx/admin-guide/load-balancer/http-health-check/
我遇到了类似的问题,你可以阻止这一点覆盖这些设置。
例如:
upstream files_1 {
least_conn;
check interval=5000 rise=3 fall=3 timeout=120 type=ssl_hello max_fails=0;
server mymachine:6006 ;
}
答案 1 :(得分:1)
我遇到了同样的错误 no live upstreams while connecting to upstream
我的与 SSL 相关:添加 proxy_ssl_server_name on
解决了它。
location / {
proxy_ssl_server_name on;
proxy_pass https://my_upstream;
}