V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
工单节点使用指南
• 请用平和的语言准确描述你所遇到的问题
• 厂商的技术支持和你一样也是有喜怒哀乐的普通人类,尊重是相互的
• 如果是关于 V2EX 本身的问题反馈,请使用 反馈 节点
Tdy95
V2EX  ›  全球工单系统

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

  •  
  •   Tdy95 · 11 天前 · 1269 次点击

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

    11 条回复    2024-05-13 09:51:43 +08:00
    Tdy95
        1
    Tdy95  
    OP
       11 天前
    tangtj
        2
    tangtj  
       11 天前
    你还要做接入备案, 备案备的是服务器.
    imlonghao
        3
    imlonghao  
       11 天前   ❤️ 1
    你还需要办理阿里云的接入备案,神奇吧
    codebs
        4
    codebs  
       11 天前   ❤️ 2
    在腾讯云备案的域名默认只能解析腾讯云服务器,若要解析阿里云服务器得做接入备案,这又是一笔时间成本
    jstony
        5
    jstony  
       11 天前
    如果你没有在阿里云做接入备案,阿里云应该不会背这个锅。在商言商,阿里也是合规需要,否则他也不想为难你。
    privil
        6
    privil  
       11 天前
    合着你完全不知道接入备案这一回事是吧,你是自己浪费的时间,真不能怪阿里云。
    kingwrcy
        7
    kingwrcy  
       11 天前   ❤️ 1
    阿里云和腾讯云互不承认,得双向备案
    mytsing520
        8
    mytsing520  
       11 天前
    1.你的域名没备案
    2.你的域名有备案,但不在阿里云接入

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

    解决方案是,如果你要使用阿里云,在阿里云做个接入备案,不需要等待也不需要关闭站点,接入备案审核期间会临时给你域名上白名单,除非审核不通过
    Tdy95
        9
    Tdy95  
    OP
       10 天前
    @tangtj @imlonghao @codebs @jstony @privil @kingwrcy @mytsing520
    感谢回复,确实没有了解到过,不同的云服务厂商还需要做接入备案。
    Tdy95
        10
    Tdy95  
    OP
       10 天前
    ICP 备案已经通过工信部的审查,从技术角度也能追踪到所有 web 转发的流量。某部门的监管力度之大再一次刷新了我的认知。 腊鸡
    jstony
        11
    jstony  
       10 天前
    @Tdy95 某部门自己本身不做实际的监督业务,他们出规则就行了,厂家按规则行事,出意外按规则处理。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2801 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:14 · PVG 22:14 · LAX 07:14 · JFK 10:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.