我们在python中开发了一个app,并使用flask通过http请求公开它的api。
一切正常,我们在内部测试没有任何问题,我们现在正在尝试在现实世界中使用该应用程序 - 我们已经让我们的IT部门给我们一个面向公众的IP /端口地址(通过防火墙??)现在我们根本无法访问服务器/应用程序。
经过一番挖掘后,我们发现问题与Windows防火墙配置有关,当它处于打开状态时无法正常工作,当它关闭时一切正常。
烧瓶应用程序代码运行如下:app.run(debug = False,host ='0.0.0.0',port = 8080) 端口8080在防火墙例外中设置,与程序例外中的python.exe一样
netstat -a显示应用程序正在等待连接。
如果我尝试通过chrome访问该网站,则会收到错误:ERR_CONNECTION_TIMED_OUT。
随着防火墙开启,我从来没有看到任何“点击”进入应用程序。
我还缺少其他一些配置吗?
非常感谢。
答案 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
对我有用。太多了吗我不知道我不是防火墙专家:(