IIS托管网站使用公网IP访问时无法与API及数据库通信问题求助
公网访问异常排查与解决方向
1. 前端调用配置排查
- 首先确认前端打包/运行时配置的API调用地址为公网可访问的地址,内网环境下配置私有IP可以正常访问,但公网环境下浏览器会从客户端本地发起请求,无法识别VM私有IP
- 检查是否存在跨域配置限制:.Net Core API的CORS规则是否仅允许内网前端地址访问,未放开公网前端域名/公网IP的访问权限
- 按F12打开浏览器控制台,查看网络请求的报错状态:是403、404还是502/503,或者直接请求超时,可快速定位问题层级
2. 后端API虚拟机公网访问配置排查
- 确认部署.Net Core API的VM是否已经绑定公网IP,且对应的网络安全组(NSG)入站规则已经放开API服务监听的端口(通常是80/443,或者自定义端口),允许0.0.0.0/0或者对应客户端公网网段的访问
- 检查API服务自身的监听配置,确认是否监听在
0.0.0.0而非仅监听私有IP/127.0.0.1,可在VM内执行netstat -ano命令查看端口监听范围 - 检查VM操作系统层面的防火墙规则,确认已放开API服务端口的公网入站访问
3. Azure SQL Database 访问权限排查
- 确认Azure SQL的防火墙规则是否已放开API虚拟机的公网出口IP的访问权限,内网环境下API通过私有链路访问Azure SQL不需要放行公网IP,但公网访问场景下如果API没有配置私有端点访问SQL,就需要将API的公网出口IP加入SQL的白名单
- 如果API是通过私有端点访问Azure SQL,需要确认VM的路由规则是否正常,不会因为公网访问场景改变数据库链路的路由指向
4. 网络链路验证
- 可以直接在公网客户端通过curl/postman直接调用API的公网地址,验证API本身是否可以正常访问,排除前端配置问题
- 在API所在VM内直接执行公网访问SQL的连接测试,确认数据库链路无异常
内容的提问来源于stack exchange,提问作者Bilel Azaiez
相关产品推荐
相关产品推荐

