配置Nginx反向代理Gunicorn后公网仍可直接访问Gunicorn端口如何解决
问题原因
- 你当前Gunicorn直接暴露公网的核心原因是启动命令中绑定了
0.0.0.0:5000,该地址会监听服务器所有网卡的5000端口,包括公网网卡,因此外部可以直接访问到Gunicorn服务。 - 你的Nginx反向代理配置已经指定了转发到
http://127.0.0.1:5000/,也就是本地回环地址的5000端口,完全不需要Gunicorn监听公网网卡。
解决方案
关闭公网5000端口的思路是完全正确且安全的,推荐优先用修改Gunicorn绑定地址的方式实现,比额外配置防火墙更简单、不易出错:
- 修改Gunicorn启动命令,将绑定地址从
0.0.0.0:5000改为本地回环地址:
gunicorn --bind 127.0.0.1:5000 wsgi:app
- 如果你是通过systemd、supervisor等工具托管Gunicorn服务,同步修改对应配置文件中的启动参数,再重启Gunicorn服务即可。
可选加固操作
如果需要额外增加安全层,可再通过防火墙规则封禁公网对5000端口的访问,双重保障:
- 若使用ufw防火墙:执行
ufw deny 5000/tcp - 若使用firewalld防火墙:执行
firewall-cmd --permanent --remove-port=5000/tcp && firewall-cmd --reload
验证
修改完成后,公网访问服务器IP:5000会无法连通,而80端口的网站访问完全不受影响,反向代理功能正常。
内容的提问来源于stack exchange,提问作者superabsorbent polymer
相关产品推荐
相关产品推荐

