记:被全球领先的阿里云浪费的 3 小时生命

36次阅读

共计 1398 个字符,预计需要花费 4 分钟才能阅读完成。

晚上上线一个老项目,之前可以 [正常] 运行,是一个很简单的 web 系统,使用 docker 暴露服务。

系统的架构图如下,项目依赖了一个 UE 引擎做画面渲染,所以这些服务放在了实体机上,使用了云服务器做了一层穿透 + Nginx 代理,此外 web 服务依赖了一个部署在阿里云服务器上的 websocket 接口 [雷]。

+-----------------------+
|       Internet        |
+-----------+-----------+
            |
+-----------v-----------+
|   Nginx Proxy [云端]   |
|    (Layer 1 Proxy)    |
+-----------+-----------+
            |
+-----------v-----------+
|  Docker Layer [本地]   |
| +-------+  +-------+  |
| | Web   |  | Backend| |
| |Service|  | Service| |
| +-------+  +-------+  |
| +-------------------+ |
| |  Desktop UE App   | |
| +-------------------+ |
+-----------------------+

问题过程

看起来 so easy,心理预期 20 分钟搞定。很快,一切都准备就绪了,突然,我发现一个 websocket 接口竟然没有通!并且返回的是 403 状态码。Status Code: 403 Forbidden

这是什么情况?403,难道是这个接口流量转发到了后端服务吗?我关闭了后端服务,发现竟然还是 403!!

那么这个接口本身正常吗?我打开 postman 发现接口正常运行。

那么难道是我的 web 容器内部的代理出问题了吗?我又绕过了云端 Nginx 服务,直接请求了容器暴露出来的路由。您猜怎么着,接口居然还是正常的!!!

那么,问题就一定出现在了 Nginx 上咯?赶紧问下 ChatGPT,怀疑是转发的配置写的有问题,但是修改后再次验证,问题依旧!

使用关键词搜索 Google, Nginx websocket 403, 发现还真有几篇文章说 Nginx 的配置,websocket 可能会检测 Origin 是否匹配,所以需要加上 proxy_set_header Origin ''; 配置。终于可以解决了。

赶紧修改验证,满怀希望的一请求,发现还是 403 !!!

此时我已经饥肠辘辘搞了 2 个小时。索性开始摆烂了,我开始使用 get 请求去访问代理后的接口,页面一片空白,就像我的内心一样茫然。习惯性的查看一下接口返回了什么内容,这一看不要紧,居然看到了 iframe 的字段。

    Non-compliance ICP Filing
    

破案

这是啥玩意,怎么居然有 ICP 未备案的警告⚠️!

打开链接一看,尼玛居然提示我没有备案,难道我备了个假案吗???

https://imgur.com/Y6hJRjX

腾讯云和站长查询都能查到记录。气的吐血三升。终于破案了!

https://imgur.com/5TIS3pG

以上就是被浪费的 3 小时生命。希望这个帖子,能拯救一些因为阿里云备案问题被坑的朋友。

阿里云 websocket 403 Nginx

正文完
 0