部署Flask-Nginx应用时无法使用80端口的问题求助
问题解决步骤
核心原因
80端口已经被Nginx占用(你的Nginx配置里已经设置listen 80),所以Gunicorn无法再绑定80端口。正确的架构是让Nginx监听80端口对外提供服务,再反向代理到Gunicorn的8080端口,这样用户就能通过80端口访问你的Flask应用。
1. 修正Nginx配置
你当前的location路径配置错误——location定义的是浏览器请求的URL路径,不是服务器上的本地文件路径。修改后的配置如下:
server { listen 80; server_name <public_ip>; # 若希望通过 http://<public_ip>/ 直接访问应用,用这个location location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # 若希望通过子路径(比如 http://<public_ip>/myapp)访问,替换成下面的配置 # location /myapp/ { # proxy_pass http://127.0.0.1:8080/; # 注意末尾的斜杠,保证路径转发正确 # proxy_set_header Host $host; # proxy_set_header X-Real-IP $remote_addr; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # } }
2. 保持Gunicorn的启动配置
继续用8080端口启动Gunicorn,建议绑定本地回环地址(更安全,仅服务器内部可访问):
PYTHONPATH=<project_name>/backend/src gunicorn <project_name>.backend.src.main:flask_app -b 127.0.0.1:8080
3. 重启Nginx使配置生效
sudo systemctl restart nginx
4. 验证访问
直接在浏览器输入http://<public_ip>(或对应的子路径),即可通过80端口访问你的Flask应用。
内容的提问来源于stack exchange,提问作者radu781
相关产品推荐
相关产品推荐

