V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
saytesnake
V2EX  ›  NGINX

Nginx 调用 CDN 的正确姿势应该是怎么样的?

  •  
  •   saytesnake · Apr 20, 2020 · 5951 views
    This topic created in 2210 days ago, the information mentioned may be changed or developed.

    Nginx 为例,

    好像一般的写法有三种,目前我这边是用着第二种方式,不过 Chrome F12 看到一堆的 301,似乎姿势不太正确...

    1 、

    location /image {
        proxy_pass http://cdn.xxx.com/image;
    }
    

    2 、

    location /image {
        rewrite ^ http://cdn.xxx.com/image;
        # 或
        rewrite 301 http://cdn.xxx.com/image;
    }
    

    3 、

    location /image {
        rewrite ^/.*$ /;
        proxy_pass http://cdn.xxx.com/image;
    }
    
    35 replies    2020-04-21 15:45:13 +08:00
    yhxx
        1
    yhxx  
       Apr 20, 2020
    你再转一次和 CDN 直接回源好像没啥区别了吧。。。
    yhxx
        2
    yhxx  
       Apr 20, 2020
    没打完就发出去了
    正常操作应该是直接把 CDN 域名写在前端代码里?
    b821025551b
        3
    b821025551b  
       Apr 20, 2020
    nginx 转发 cdn 是什么操作,把 cdn 的优势直接丢掉
    wangyzj
        4
    wangyzj  
       Apr 20, 2020
    这什么操作?
    yuzo555
        5
    yuzo555  
       Apr 20, 2020
    最正确的方式应该是直接替换调用处使用的域名,再不济也只能是 301,proxy_pass 是什么鬼?完全浪费 CDN 还多花一遍流量费用?
    saytesnake
        6
    saytesnake  
    OP
       Apr 20, 2020
    @yhxx
    @b821025551b
    @wangyzj

    前端那边都不把链接更换的,所以无奈暂时选择了 301 跳,当然这个方式也不是规范的...
    saytesnake
        7
    saytesnake  
    OP
       Apr 20, 2020
    @yuzo555 在网上搜了,我也觉得 proxy_pass 很诡异...哈哈
    just1
        8
    just1  
       Apr 20, 2020 via Android
    有点窒息
    13 反带那要 cdn 有何用
    2 不带路径 301 过去也拿不到正确文件
    fancy111
        9
    fancy111  
       Apr 20, 2020
    CDN 跟你的 nginx 有啥关系? 除非你自建 CDN
    privil
        10
    privil  
       Apr 20, 2020
    你应该 rewrite 到 cdn 路径,反代的操作是真的有点骚。
    chairuosen
        11
    chairuosen  
       Apr 20, 2020
    让前端改,不改就拉 JB 倒
    Xusually
        12
    Xusually  
       Apr 20, 2020
    这。。。。。窒息的操作
    就算要走你的入口,最多也是 301 过去 CDN
    反代的话要 CDN 何用,用户找我,我找 CDN,CDN 找我回源,emmmmmm
    saytesnake
        13
    saytesnake  
    OP
       Apr 20, 2020
    @just1
    @privil
    @Xusually

    没错...太晕倒了,网上查到的到底是什么鬼啊...哈哈哈


    @chairuosen

    有道理,不改拉倒了。
    stillyu
        14
    stillyu  
       Apr 20, 2020
    不止是把 CDN 的优势丢掉了,CDN 根本开不起来吧,怎么回源,死循环了
    Cmdhelp
        15
    Cmdhelp  
       Apr 20, 2020
    0.0 我有个疑问,都走 cdn 了还啥还要反向代理...................................
    Cmdhelp
        16
    Cmdhelp  
       Apr 20, 2020
    你都不怕你的服务器拖累人家 cdn 吗
    Cmdhelp
        17
    Cmdhelp  
       Apr 20, 2020
    我真没懂这薄操作,又懂得大哥给我普及普及,可能是我没跟上
    saytesnake
        18
    saytesnake  
    OP
       Apr 20, 2020 via Android
    @Cmdhelp 这操作是错误的…反正
    GrayXu
        19
    GrayXu  
       Apr 20, 2020
    反向反向代理
    superrichman
        20
    superrichman  
       Apr 20, 2020 via iPhone
    满头问号的操作???
    superrichman
        21
    superrichman  
       Apr 20, 2020 via iPhone
    直接把前端页面地址改成 cdn 的。就好像给你在 tb 别人买东西直接填别人的地址寄过去就好了。你现在的做法是让 tb 寄到你自己家然后再寄给别人。
    xmlf
        22
    xmlf  
       Apr 20, 2020 via Android
    你直接用 sub filter,把页面地址替换掉就行了
    sadfQED2
        23
    sadfQED2  
       Apr 20, 2020 via Android
    令人窒息的操作.jpeg 反代 cdn 我想都不敢想
    xiaoz
        24
    xiaoz  
       Apr 20, 2020 via Android
    subs_filter 替换比较省事
    Aruforce
        25
    Aruforce  
       Apr 20, 2020 via Android
    降智打击…你这么做是把 nginx 当成 dns 用了啊……
    jugelizi
        26
    jugelizi  
       Apr 20, 2020 via iPhone
    什么叫前端不把链接更换 难道你换不了?
    1daydayde
        27
    1daydayde  
       Apr 20, 2020 via iPhone
    大概是没明白什么是 csn
    你要把域名的 dns 改为 cdn 给你的 ip 或者域名,给 cdn 一个源站地址
    用户请求这个链接直接走 cdn,没有再回到源站拿
    1daydayde
        28
    1daydayde  
       Apr 20, 2020 via iPhone
    @0312birdzhang 手机打字 d 打成了 s……
    saytesnake
        29
    saytesnake  
    OP
       Apr 20, 2020
    @xmlf
    @xiaoz

    学到了,谢谢~
    gadmyth
        30
    gadmyth  
       Apr 20, 2020
    使用场景:
    比如, App 老版本, 访问服务器的图片地址, 域名与服务器一致; 然后, 系统升级, 将图片全迁移到了云端, 域名发生变化, 就需要对 App 老版本的图片链接进行兼容.

    之前用过 rewrite, 看来 subs_filter 方案更好
    wizardoz
        31
    wizardoz  
       Apr 21, 2020
    反了吧,Nginx 应该在 CDN 后面才对啊
    guiling
        32
    guiling  
       Apr 21, 2020
    1 、让前端替换 cdn 链接
    2 、前端提交链接或者返回给前端链接时后台替换
    yc8332
        33
    yc8332  
       Apr 21, 2020
    浪费钱。。也浪费时间。。。走 cdn 用户就不会直接到你服务器了。你还搞这个跳转干嘛。。要改前端
    roidinev
        34
    roidinev  
       Apr 21, 2020
    @wizardoz 确实。cdn 回源到 nginx,nginx 应该是被动的。楼主说的只是自己源站的配置,只是 proxy_pass 到的应该是自己的某些 web 服务器,不应该是 cdn 服务器。
    MonoLogueChi
        35
    MonoLogueChi  
       Apr 21, 2020 via Android
    第一种和第三种肯定是不对的,反代 CDN ???第二种方式还算可以,最佳方案应该是前端处理
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3141 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 87ms · UTC 03:17 · PVG 11:17 · LAX 20:17 · JFK 23:17
    ♥ Do have faith in what you're doing.