我们在 python 中开发了一个应用程序,并使用flask通过http请求公开其api。

  • 所有这些都在 WINDOWS 上 -

  • 一切正常,我们已经在内部进行了测试,没有任何问题,我们现在正尝试在现实世界中使用该应用程序 - 我们已经让我们的 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/

    10-12 16:58