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

时间:2014-09-29 14:49:35

标签: python flask windows-firewall

我们在python中开发了一个app,并使用flask通过http请求公开它的api。

  • 这一切都在WINDOWS上 -

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

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

烧瓶应用程序代码运行如下:app.run(debug = False,host ='0.0.0.0',port = 8080) 端口8080在防火墙例外中设置,与程序例外中的python.exe一样

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

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

随着防火墙开启,我从来没有看到任何“点击”进入应用程序。

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

非常感谢。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

对我有用。太多了吗我不知道我不是防火墙专家:(