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

Duk*_*ver 7 nginx linode lets-encrypt

我有一个 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"
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么办。我四处搜索,找不到任何有关如何深入挖掘或在哪里寻找解决问题的信息。

我是如何进入这种状态的

我正在 Linode 上的 Ubuntu 上运行服务器,并且想要升级操作系统。为此,我使用最新版本的 Ubuntu (22.04) 启动了一个新的 Linode,并从头开始重新创建了服务器。安装完所有内容后,我交换了新旧服务器的 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
}
Run Code Online (Sandbox Code Playgroud)

Duk*_*ver 4

啊。我是一个假人。这不是 nginx 错误。

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

发布我的愚蠢行为,以防它对任何遇到相同 nginx 错误的未来搜索者有所帮助。