一、问题描述
我有一台windows的服务器,用于fastapi后端开发工作,但是之前一直好好的,但是突然从有一天开始,fastapi默认的一个接口文档http://127.0.0.1:8001/docs打开不了,打开全是空白,但是我的后端服务正常,点击也显示有200响应,并且相同代码在其他电脑上能打开和运行(不是后端问题);
可能是前端问题,于是打开浏览器按f12,发现有下面的问题报错:
二、解决方法
2.1 问题分析
1、首先是定位问题,我要先判断这个问题属于后端、前端、还是数据库之类;
2、从问题的描述来看,结合浏览器里的内容,由于网络原因,无法解析https://cdn.jsdelivr.net/npm/swagger-ui-dist@5.9.0/swagger-ui.css和 https://cdn.jsdelivr.net/npm/swagger-ui-dist@5.9.0/swagger-ui-bundle.js
3、所以这边分析判断是网络连接或者一些设置的问题
2.2 问题解决流程
1、然后我把对应问题的截图,发给AI,包括kimi与gpt
2、他们给出主要是给出以下可能:
3、于是尝试检查网络原因,但是其他网站我都能访问,代理开了关了也不行,因此排除网络原因;
4、我关闭了防火墙,然后发现也不行
5、我开始测试CDN服务问题
在浏览器中直接访问以下链接,看是否能加载资源:
- <font style="color:rgba(0, 0, 0, 0.9);">https://cdn.jsdelivr.net/npm/swagger-ui-dist@5.9.0/swagger-ui.css</font>
- <font style="color:rgba(0, 0, 0, 0.9);">https://cdn.jsdelivr.net/npm/swagger-ui-dist@5.9.0/swagger-ui-bundle.js</font>
我发现我在A电脑上可以,在对应电脑上不行,因此我最终判定为CDN问题
2.3 解决方案
1、这里不得不说,AI也并不是全能的,他提供的2个方案,都行不通,但是方向是对的
- 使用fastapi-cdn-host
- 自定义CDN地址
2、结合以前自己装虚拟机时候,需要设置dns来访问全球各地的网络,那么cdn问题,会不会是dns引起的?
抱着试一试的想法,我修改我windows电脑里的dns地址,改成手动,中国电信提供的114.114.114.114,没想到这个问题就解决了,对应服务又能够访问
三、问题反思与知识补充
如果 DNS 出问题,可能会导致以下几种情况,我的问题就是下面第二条,可能一些容器也会出现类似问题,可以参照这思路去解决:
1. 域名无法解析
- 无法访问网站:用户无法通过域名访问网站,因为域名无法解析为正确的 IP 地址。
- 浏览器显示错误信息:浏览器可能会显示“无法解析主机名”或“DNS 服务器未响应”等错误信息。
2. CDN 资源加载失败
- 静态资源无法加载:如果网站依赖 CDN 加载静态资源(如 CSS、JS 文件),DNS 问题可能导致这些资源无法加载。
- 页面显示异常:由于静态资源无法加载,网页可能会显示异常,例如样式丢失、功能不可用等。
3. 服务不可用
- API 和服务无法访问:如果服务依赖域名进行通信,DNS 问题可能导致 API 和服务无法访问。
- 应用功能受限:依赖外部服务的应用可能会因为无法访问这些服务而功能受限。
4. 邮件服务受影响
- 邮件无法发送或接收:邮件服务器依赖 DNS 中的 MX 记录来确定邮件的路由。如果 DNS 出问题,邮件服务可能会受到影响。
5. CDN 负载均衡失败
- 访问速度下降:CDN 通常使用 DNS 实现负载均衡和地理位置优化。如果 DNS 出问题,CDN 可能无法正确分配请求到最近的节点,导致访问速度下降。
- 高可用性降低:如果某个 CDN 节点不可用,DNS 无法将请求重定向到其他可用节点,可能导致服务中断。
6. 缓存问题
- 旧的 DNS 缓存:DNS 记录可能会被缓存,如果 DNS 记录更新后,旧的缓存可能导致用户访问到错误的 IP 地址。
- 缓存超时:如果 DNS 缓存超时,可能导致短暂的访问问题,直到新的 DNS 记录被获取。
评论前必须登录!
注册