问题分析
内网可以访问,外网无法访问的原因可能有以下 #可能有一些超出预知的错误,你们如果解决了请评论一下问题和解决方案,供他人参考
- 服务器商安全组未放通你所需的端口。
- 面板控制软件安全组未放通你所需的端口。
- Flask代码app.run参数配置错误
1.放通服务商安全组端口
这个很简单,百度搜索答案格式“你的服务商 怎么放通安全组端口”
2. 放通控制面板软件端口
例如宝塔,放通端口需要点击左侧目录中的"安全"进行配置。
3.代码错误导致外网不能访问
我遇到的就是这种情况,个人对Flask框架不熟悉造成的。我已经放通了服务商的安全组端口,还有控制面板的安全组端口,讲道理一般情况都是可以访问了的。
本地可以访问,外网不能访问。
看到这篇文章意识到可能是代码出现的问题:文章链接
这是我的代码
if __name__ == '__main__': app.run(debug=True,port=2333)
查阅Flask的第三方使用手册发现我的代码参数没写完整导致了这种情况。
链接地址:Flask 应用
app.run(host, port, debug, options)
这里把我的代码改为
序号 参数与描述 1 host
要监听的主机名。 默认为127.0.0.1(localhost)。设置为“0.0.0.0”以使服务器在外部可用
2 port
默认值为5000
3 debug
默认为false。 如果设置为true,则提供调试信息
4 options
要转发到底层的Werkzeug服务器。
if __name__ == '__main__': app.run(host="0.0.0.0",debug=True,port=2333)
重新运行,外网即可访问。
总结一下为什么不添加host参数为空时外网无法访问,当host参数为空是默认host为127.0.0.1。经过测试,除了默认的127.0.0.1(localhost),host为腾讯服务器ip提供内网IP或外网IP外网也无法访问,当host为0.0.0.0时外网能访问。
如果有帮助到你了
就请点个赞哇~