同一子网无法访问Windows Server 2016上的FastAPI服务器
问题原因及解决方案
最可能的原因:Uvicorn默认绑定本地回环地址
Uvicorn启动时若不指定--host参数,默认会绑定127.0.0.1(仅本地回环网卡),仅服务器本机可访问,同一子网的其他机器无法连接。而python3 -m http.server 8000默认绑定0.0.0.0(所有可用网卡),因此其他机器能正常访问。
解决方法
修改Uvicorn启动命令,添加--host 0.0.0.0参数:
uvicorn main:app --reload --port 8000 --host 0.0.0.0
该参数会让Uvicorn监听服务器上所有网卡的8000端口,同一子网的其他机器即可通过服务器的局域网IP访问FastAPI服务。
其他排查方向
- Windows防火墙进程拦截:虽然8000端口的入站规则已开放(http.server可访问),但防火墙可能单独拦截了Poetry环境中的Python进程。可手动在防火墙入站规则中添加允许该Python进程访问8000端口的规则。
- 虚拟环境网络限制:极少数情况下,Poetry虚拟环境的网络配置可能存在限制。可尝试在系统全局Python环境中启动Uvicorn,测试是否能被其他机器访问,以此排除虚拟环境的问题。
内容的提问来源于stack exchange,提问作者link
相关产品推荐
相关产品推荐

