我如何配置python/flask以使用Windows防火墙进行公共访问

问题描述 投票:0回答:2

我们用Python开发了一个应用程序,并使用flask通过http请求公开其API。

所有这些都在WINDOWS上。

一切正常,我们已经进行了内部测试,没有任何问题,我们现在正在尝试在现实世界中使用该应用程序 - 我们已经让我们的 IT 部门为我们提供了一个面向公众的 IP/端口地址(通过防火墙转发? ?)现在我们根本无法访问服务器/应用程序。

经过一番挖掘,我们发现问题与 Windows 防火墙配置有关,打开时它将无法工作,关闭时一切正常。

Flask 应用程序代码的运行方式如下:

app.run(debug=False, host='0.0.0.0', port=8080)
端口 8080 在防火墙例外中设置,就像程序例外中的 python.exe

netstat -a 显示应用程序正在等待连接。

如果我尝试通过 Chrome 访问该网站,则会收到错误:

ERR_CONNECTION_TIMED_OUT

打开防火墙后,我根本看不到任何“点击”进入应用程序。

我还缺少其他一些配置吗?

非常感谢。

python flask windows-firewall
2个回答
4
投票

当从带有防火墙的 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

它对我有用。是不是太多了?我不知道,因为我不是防火墙专家:(


1
投票

当作为服务运行时,运行该服务的程序不是

python.exe
而是
pythonservice.exe
。您必须将其添加到 Windows 防火墙设置中允许的程序中。 就我而言,它位于
C:\Python33\Lib\site-packages\win32\pythonservice.exe
下。

© www.soinside.com 2019 - 2024. All rights reserved.