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

35 天前
 Tdy95

晚上上线一个老项目,之前可以 [正常] 运行,是一个很简单的 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的字段。

    <title>Non-compliance ICP Filing</title>
    <script language="javascript" type="text/javascript">
        window.onload = function () { 
           document.getElementById("mainFrame").src= "http://batit.aliyun.com/alww.html?id=00000000003937939399"; 
            }
    </script>

破案

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

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

https://imgur.com/Y6hJRjX

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

https://imgur.com/5TIS3pG

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

阿里云 websocket 403 Nginx

1486 次点击
所在节点    全球工单系统
12 条回复
Tdy95
35 天前
tangtj
35 天前
你还要做接入备案, 备案备的是服务器.
imlonghao
35 天前
你还需要办理阿里云的接入备案,神奇吧
codebs
35 天前
在腾讯云备案的域名默认只能解析腾讯云服务器,若要解析阿里云服务器得做接入备案,这又是一笔时间成本
jstony
35 天前
如果你没有在阿里云做接入备案,阿里云应该不会背这个锅。在商言商,阿里也是合规需要,否则他也不想为难你。
privil
35 天前
合着你完全不知道接入备案这一回事是吧,你是自己浪费的时间,真不能怪阿里云。
kingwrcy
35 天前
阿里云和腾讯云互不承认,得双向备案
mytsing520
34 天前
1.你的域名没备案
2.你的域名有备案,但不在阿里云接入

按照合规要求,这两种情况要是满足其中一种,阿里云给你放过去了,那阿里云大概率就要倒霉了

解决方案是,如果你要使用阿里云,在阿里云做个接入备案,不需要等待也不需要关闭站点,接入备案审核期间会临时给你域名上白名单,除非审核不通过
Tdy95
34 天前
@tangtj @imlonghao @codebs @jstony @privil @kingwrcy @mytsing520
感谢回复,确实没有了解到过,不同的云服务厂商还需要做接入备案。
Tdy95
34 天前
ICP 备案已经通过工信部的审查,从技术角度也能追踪到所有 web 转发的流量。某部门的监管力度之大再一次刷新了我的认知。 腊鸡
jstony
34 天前
@Tdy95 某部门自己本身不做实际的监督业务,他们出规则就行了,厂家按规则行事,出意外按规则处理。
woodchen
5 天前
感谢,如果不是你提醒,我还得搜半天

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1039947

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX