nginx“连接()到上游时失败(111:未知错误)”错误

6

我有一个nginx服务器,它给了我一个我找不到任何信息的错误。服务器正在运行,我相信底层站点(一个Flask应用程序)也在运行,但客户端收到一个通用的500错误。当我查看/var/log/nginx/error.log时,我看到了这个:

2022/09/04 04:59:52 [error] 1523#1523: *1 connect() failed (111: Unknown error) while connecting to upstream, client: [clients ip], server: mysite.com, request: "GET / HTTP/1.1", upstream: "http://[::1]:8000/", host: "mysite.com"

我不知道该怎么办。我已经搜索了一些信息,但找不到如何深入挖掘或解决问题的任何信息。

我是如何陷入这种状态的

我在Linode上使用Ubuntu运行服务器,并想升级操作系统。为此,我启动了一个新的Linode,安装了最新版本的Ubuntu(22.04),并从头开始重新创建了服务器。在安装完所有内容后,我交换了旧服务器和新服务器的IP地址,以避免重新设置DNS记录。我使用CertBot来管理https证书,所以我再次运行了它,然后重新启动了所有内容。

此时,nginx正在运行,并且我的配置很好。一切看起来与旧服务器上的一样。但每个请求都会出现上面的错误500。

非常感谢任何帮助/指针,使我恢复到正常工作状态!

编辑:nginx配置

server {
    server_name = www.mysite.com;
    return 301 $scheme://mysite.com$request_uri;

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/mysite.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mysite.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
    server_name mysite.com;

    location ^~ /static/ {
        include /etc/nginx/mime.types;
        root  /home/my_username/path/to/code/;
    }

    location / {
        proxy_pass http://localhost:8000;
        include /etc/nginx/proxy_params;
        proxy_redirect off;
        proxy_read_timeout 300s;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/mysite.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mysite.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot


}
server {
    if ($host = www.mysite.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot
    if ($host = mysite.com) {
        return 301 https://$host$request_uri;
    } # Manually added by me

    server_name = mysite.com;
    listen 80;
    return 404; # managed by Certbot
}

你能分享一下你的NGINX配置吗? - palindromeotter33
2个回答

2

哎呀,我真是个笨蛋。这不是nginx的错误。

我在我的Flask网站中配置了一些错误,导致它抛出500错误。由于配置错误,它们没有被记录到正确的文件中,所以我没有意识到这是问题所在。修复了Flask配置后,服务器恢复正常。

发布我的愚蠢之举,以帮助任何未来遇到相同nginx错误的搜索者。


1

将你的nginx配置重写为使用ip而不是dns。例如使用127.0.0.1代替localhost,或从/etc/hosts中删除ipv6别名。

可以尝试这个方法


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