当前位置: 首页 > news >正文

falsk windows 服务器部署-解决服务器外无法访问

falsk windows 服务器部署-解决服务器外无法访问

以下是详细分析和解决步骤,帮你排查“服务器外无法访问”的问题,从网络、端口、服务本身等维度逐一确认:

一、先确认核心逻辑:端口是否真的“通”了

不管用 flask run 还是其他 WSGI 服务器,要让外部访问,必须满足 “端口在服务器、网络、防火墙全链路打通” ,按以下步骤逐一验证:

1. 在服务器本机验证端口是否被 Flask 占用

打开服务器的命令提示符(CMD),执行:

# 查看 65050 端口是否被 Python/Flask 占用
netstat -ano | findstr "65050"
  • 如果输出里有 LISTENING 状态,且 PID 对应 Python 进程,说明 Flask 确实在监听 65050 端口。
  • 如果没输出,说明 Flask 没启动成功,或端口被其他程序占用了(比如之前的残留进程)。
2. 在服务器本机用 curl 或浏览器访问
  • 用命令行测试:在服务器 CMD 里执行
    curl http://127.0.0.1:65050
    
    如果返回 Flask 页面的 HTML 内容,说明服务在本机是正常的。
  • 用浏览器测试:在服务器上打开浏览器,访问 http://127.0.0.1:65050http://192.168.0.12:65050 ,能打开就说明服务本身没问题,问题在外部网络/防火墙。

二、检查网络链路:公网 IP、端口映射是否正确

公网IP 是公网 IP,需要确保:

1. 确认“公网 IP 确实指向你的服务器”
  • 服务器本机访问 https://www.whatismyip.com ,看显示的公网 IP 是否是 36.147.85.23
    • 如果不一致,说明你理解的“映射后的地址”可能有误(比如公网 IP 是路由器/WAF 的,需要在路由器里做端口映射)。
    • 如果一致,继续往下排查。
2. 确认路由器/网关的“端口映射”是否生效(如果服务器在局域网内)

如果你的服务器是在局域网(比如家里/公司内网),公网 IP 是路由器的,必须在路由器里做 “端口映射”

  • 登录路由器管理后台(一般地址是 192.168.0.1192.168.1.1 ,看路由器型号)。
  • 找到“端口映射”“虚拟服务器”“NAT 转发”之类的配置项,添加规则:
    • 外部端口:65050(你 Flask 用的端口)
    • 内部 IP:服务器的局域网 IP(比如 192.168.0.12 ,在服务器本机执行 ipconfigIPv4 地址
    • 内部端口:65050
    • 协议:TCP
  • 保存后,重启路由器,确保映射规则生效。
3. 用公网工具测试端口是否可访问

外部设备(手机/其他电脑,别在服务器本机)访问以下网址,测试 65050 端口是否能被公网访问:

  • https://www.yougetsignal.com/tools/open-ports/
    输入 公网ip65050 ,点“Check”。
    • 如果显示 Port 65050 is open ,说明公网能访问到端口;
    • 如果显示 Port 65050 is closed ,说明端口没打通,问题在防火墙或路由器映射。

三、检查防火墙:Windows 防火墙、云厂商安全组

1. 确认 Windows 防火墙的入站规则

你已经配置了 65050 端口的入站规则,但要确认:

  • 规则的“本地端口”确实是 65050 ,“协议类型”是 TCP
  • 规则状态是“已启用”(在“高级安全 Windows 防火墙” → 入站规则里,看规则前面的绿色对勾)。
  • 如果服务器是云主机(比如阿里云、腾讯云),还要检查 云厂商的安全组规则 ,确保放行 65050 端口(很多云主机默认会封禁非 80、443 等端口)。
2. 临时关闭防火墙测试(仅调试用)

为了快速验证是否是防火墙问题,可临时关闭 Windows 防火墙:

  • 控制面板 → 系统和安全 → Windows 防火墙 → 启用或关闭 Windows 防火墙 → 选择“关闭 Windows 防火墙”。
  • 然后在外部设备重新访问 http:/公网ip:65050 ,如果能访问了,说明是防火墙规则没配对;如果还不能,继续往下排查。

四、确认 Flask 服务本身的绑定逻辑

1. 检查 Flask 启动命令

确保启动命令是:

flask run --host=0.0.0.0 --port=65050
  • --host=0.0.0.0 是关键,表示 Flask 绑定到服务器的所有网卡,允许外部访问;如果写成 --host=127.0.0.1--host=192.168.0.12 ,就只能本机或局域网访问,公网无法访问。
2. 检查 Flask 代码里的监听逻辑

如果代码里有手动设置 app.run() ,确认参数:

if __name__ == "__main__":app.run(host='0.0.0.0', port=65050, debug=False)
  • host 必须是 0.0.0.0 ,否则会限制访问来源。

五、总结排查流程(按顺序执行)

  1. 本机验证:服务器本机用 curl 或浏览器访问 http://127.0.0.1:65050 ,确认服务正常。
  2. 局域网验证:同一局域网的其他设备访问 http://192.168.0.12:65050 ,确认局域网能访问。
  3. 公网端口测试:用 yougetsignal 测试 36.147.85.23:65050 是否开放。
  4. 防火墙/安全组:确认 Windows 防火墙、云厂商安全组放行 65050 端口。
  5. 端口映射:如果是内网服务器,确认路由器的端口映射规则正确。

按这个流程走一遍,就能定位到具体哪一步“断了”,解决后外部就能正常访问 http://公网:65050 啦!如果还有问题,把每一步的测试结果补充出来,就能进一步分析~

http://www.dtcms.com/a/313935.html

相关文章:

  • 零售行业线上线下融合趋势,华为云智能零售解决方案,在门店运营与电商业务中的技术应用与场景实践
  • LLM大模型时代:生活服务领域的“生存革命“与新生态重构
  • [论文阅读] 人工智能 + 教学 | 从代码到职业:用机器学习预测竞赛程序员的就业潜力
  • FLutter 如何在跨平台下实现国际化多语言开发
  • 安全扫描:目标使用过期的TLS1.0 版协议问题
  • Spring AI Alibaba Graph 深度解析:原理、架构与应用实践
  • 尚硅谷2025最新SpringCloud速通-操作步骤(详细)
  • [复习]计算机网络
  • 从原始 Import/Export 到 wasm-bindgen 与自定义 Section
  • Ethereum:拥抱开源,OpenZeppelin 未来的两大基石 Relayers 与 Monitor
  • 嵌入式硬件中三极管推挽电路控制与实现
  • 模型蒸馏(Distillation):原理、算法、应用
  • 突破Transformer局限!MICN:线性复杂度实现时序预测新高度
  • LeetCode 132:分割回文串 II
  • 作物生长模型Oryza V3实战19:场景模拟常见问题及解决
  • Redis7基数统计(HyperLogLog)深度分析
  • PostGIS面试题及详细答案120道之 (091-100 )
  • 读懂Node Exporter采集数据的原理
  • Spring Boot + ShardingSphere 实现分库分表 + 读写分离实战
  • day15 SPI
  • PE 方法中的海面边界建模:光滑与粗糙海面条件解析
  • Android JUnit 测试框架详解:从基础到高级实践
  • C 语言枚举、typedef 与预处理详解
  • TinUI较复杂面板布局演示
  • 使用1panel将http升级至https的过程
  • 8.高斯混合模型
  • Next Terminal 实战:内网无密码安全登录
  • Ubuntu共享文件夹权限设置
  • 面试题:闭包和循环的异步如何结合
  • 《算法导论》第 1 章 - 算法在计算中的作用