![nginx 出现 502 错误。它似乎没有监听任何端口,但会连接到默认端口](https://linux22.com/image/764286/nginx%20%E5%87%BA%E7%8E%B0%20502%20%E9%94%99%E8%AF%AF%E3%80%82%E5%AE%83%E4%BC%BC%E4%B9%8E%E6%B2%A1%E6%9C%89%E7%9B%91%E5%90%AC%E4%BB%BB%E4%BD%95%E7%AB%AF%E5%8F%A3%EF%BC%8C%E4%BD%86%E4%BC%9A%E8%BF%9E%E6%8E%A5%E5%88%B0%E9%BB%98%E8%AE%A4%E7%AB%AF%E5%8F%A3.png)
事实: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
地址。