晚上上线一个老项目,之前可以 [正常] 运行,是一个很简单的 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 未备案的警告⚠️!
打开链接一看,尼玛居然提示我没有备案,难道我备了个假案吗???
腾讯云和站长查询都能查到记录。 气的吐血三升。终于破案了!
以上就是被浪费的 3 小时生命。 希望这个帖子,能拯救一些因为阿里云备案问题被坑的朋友。
阿里云 websocket 403 Nginx
1
Tdy95 OP |
2
tangtj 195 天前
你还要做接入备案, 备案备的是服务器.
|
3
imlonghao 195 天前 1
你还需要办理阿里云的接入备案,神奇吧
|
4
codebs 195 天前 2
在腾讯云备案的域名默认只能解析腾讯云服务器,若要解析阿里云服务器得做接入备案,这又是一笔时间成本
|
5
jstony 195 天前
如果你没有在阿里云做接入备案,阿里云应该不会背这个锅。在商言商,阿里也是合规需要,否则他也不想为难你。
|
6
privil 195 天前
合着你完全不知道接入备案这一回事是吧,你是自己浪费的时间,真不能怪阿里云。
|
7
kingwrcy 195 天前 1
阿里云和腾讯云互不承认,得双向备案
|
8
mytsing520 195 天前
1.你的域名没备案
2.你的域名有备案,但不在阿里云接入 按照合规要求,这两种情况要是满足其中一种,阿里云给你放过去了,那阿里云大概率就要倒霉了 解决方案是,如果你要使用阿里云,在阿里云做个接入备案,不需要等待也不需要关闭站点,接入备案审核期间会临时给你域名上白名单,除非审核不通过 |
9
Tdy95 OP |
10
Tdy95 OP ICP 备案已经通过工信部的审查,从技术角度也能追踪到所有 web 转发的流量。某部门的监管力度之大再一次刷新了我的认知。 腊鸡
|
12
woodchen 165 天前 1
感谢,如果不是你提醒,我还得搜半天
|