nginx 出现 502 错误。它似乎没有监听任何端口,但会连接到默认端口

nginx 出现 502 错误。它似乎没有监听任何端口,但会连接到默认端口

事实:Nginx 默认可以访问。Gunicorn 正在运行,网站可以通过 LAN 访问。Nginx 运行,没有给我任何错误。当我检查时sudo lsof -i -P -n | grep LISTEN,它告诉我 Nginx 没有监听任何东西,并且端口 80 和 443 是开放的。

我关注本教程建立一个 Flask 网站,直到最后一切都运行良好。我让 Gunicorn 在 上提供服务localhost:8000,并可以通过其 LAN 地址的其他计算机访问它。然而,当我尝试从74.114.75.91我的静态 IP 在线访问它时,我只得到 502。这是我的sites-available代码。

server {
    # listen on port 80 (http)
    listen 80;
    server_name _;
    location / {
         # redirect any requests to the same URL but on https
         return 301 https://$host$request_uri;
        }
    }

server {
    # listen on port 443 (https)
    listen 443 ssl;
    server_name _;

    # location of the self-signed SSL certificate
    ssl_certificate /home/pi/farmData/certs/cert.pem;
    ssl_certificate_key /home/pi/farmData/certs/key.pem;

    # write access and error logs to /var/log
    access_log /var/log/farmData_access.log;
    error_log /var/log/farmData_error.log;

    location / {
        # forward application requests to the gunicorn server
        proxy_pass http://localhost:8000;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /static {
        # handle static files directly, without forwarding to the application
        alias /home/pi/farmData/app/static;
        expires 30d;
    }
}

答案1

你的陈述相互矛盾。

您声明:“gunicorn 正在 localhost:8000 上运行”并且“可以通过其 LAN 地址上的其他计算机访问它”。

如果 Gunicorn 正在监听localhost:8000,则它无法与 LAN 客户端通信。如果 Gunicorn 正在监听<lan_ip>:8000,则 nginx 无法使用地址与其通信localhost:8000

您需要确保 Gunicorn 正在监听localhost:8000地址。

相关内容