【问题标题】:Flask-SocketIO server hosted on Windows 10 works on all ports except port 80 when outside local network托管在 Windows 10 上的 Flask-SocketIO 服务器在本地网络之外可在除端口 80 之外的所有端口上工作
【发布时间】:2020-03-14 15:32:42
【问题描述】:

我正在尝试在 Windows 计算机上托管一个 flask-socketio 服务器(目前仅用于学习目的,稍后将移至 Raspberry Pi)并且对烧瓶相当陌生。在尝试从本地网络外部访问服务器之前,一切都很顺利。

服务器正在使用以下代码运行,正如许多其他 StackOverflow 帖子所解释的那样:

if __name__ == '__main__':
   socketio.run(app, debug=False, host='0.0.0.0', port=80)

我已正确转发端口,并且通过我的全局 IP、本地 (192.168.X.X) 地址或 localhost 在我自己的网络中(在 所有 端口上)可以看到服务器。如果服务器托管在端口 80 以外的任何端口上,外部用户也可以看到它,包括烧瓶默认值 5000。但是,如果我托管在端口 80 上,则外部什么都看不到。

我已经对端口 80 和 python 可执行文件的 windows 防火墙入站规则进行了广泛的试验。我无法排除的唯一原因是 Windows 10 阻止入站端口 80 连接的特定原因。机器上没有运行其他竞争服务器,python/Flask-SocketIO 在此处提到的任何设置/连接中都没有抛出错误。

问题: 有没有关于 Flask-SocketIO 或 Windows 系统的问题我根本找不到?我应该研究“链”的其他哪些部分来诊断这个?

【问题讨论】:

  • 您的 ISP 可能会阻止端口 80 传入。
  • 在 Unix 系统上,1024 以下的端口是有权限的,只能由具有管理员权限的帐户访问。不确定Windows是否相同,您可能想尝试在管理员帐户下运行以测试这一点。或者,您可以尝试另一个低端口,例如 81。如果 81 有效但 80 无效,那么我怀疑您的 ISP 阻止您托管 Web 服务器。
  • @v25,刚刚给他们打了电话,但没有发现任何有用的东西 (Cox)。
  • @Miguel 我已经运行了端口 79 和 81,并且两者都运行良好。这也符合 v25 的建议。我可能需要寻找其他选项来通过我的 isp 修复或补救此问题。
  • 如果它是永久使用的,你应该考虑在 443 上运行 SSL,虽然 ISP 也可能会阻止它。您还可以查看应用程序ngrok,它为您提供了一个临时公共 URL,包括 SSL,并将其映射回任何内部端口,但这对于临时设置可能更好;这最终取决于您的用例。

标签: python flask server network-programming flask-socketio


【解决方案1】:

正如原始问题中的 cmets 所建议的那样,这种情况表明 ISP 阻止了所使用的端口,尤其是在低于 1000 的其他端口号工作的情况下(否则,这将暗示某处存在防火墙问题)。

在与我的 ISP 进行了长时间的通话后,我发现端口 80 和 25 确实被阻塞了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 2020-06-27
    • 1970-01-01
    • 2020-12-12
    • 2011-02-19
    • 2022-01-25
    • 1970-01-01
    相关资源
    最近更新 更多