我们在 python 中开发了一个应用程序,并使用flask通过http请求公开其api。
一切正常,我们已经在内部进行了测试,没有任何问题,我们现在正尝试在现实世界中使用该应用程序 - 我们已经让我们的 IT 部门为我们提供了一个面向公众的 IP/端口地址(通过防火墙转发?? ),现在我们根本无法访问服务器/应用程序。
经过一番挖掘,我们发现问题与 Windows 防火墙配置有关,当它打开时它不会工作,当它关闭时一切正常。
flask 应用程序代码运行如下: app.run(debug=False, host='0.0.0.0', port=8080)
端口 8080 是在防火墙异常(exception)中设置的,就像程序异常(exception)中的 python.exe 一样
netstat -a 显示应用程序正在等待连接。
如果我尝试通过 chrome 访问该网站,则会收到错误消息:ERR_CONNECTION_TIMED_OUT。
启用防火墙后,我根本看不到任何“点击”进入应用程序。
我还缺少其他一些配置吗?
非常感谢。
最佳答案
从带有防火墙的 Windows 机器运行 Flask 时,我使用以下命令打开一个端口:
netsh firewall add portopening TCP 8080 "MyAppName"
netsh advfirewall firewall add rule name="MyAppName TCP Port 8080" dir=in action=allow protocol=TCP localport=8080
netsh advfirewall firewall add rule name="MyAppName TCP Port 8080" dir=out action=allow protocol=TCP localport=8080
它对我有用。是不是太多了?我不知道,因为我不是防火墙大师 :(
关于python - 我如何配置 python/flask 以使用 Windows 防火墙进行公共(public)访问,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26102680/