Nginx 调用 CDN 的正确姿势应该是怎么样的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
saytesnake
V2EX    NGINX

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

  •  
  •   saytesnake 2020-04-20 16:29:12 +08:00 5695 次点击
    这是一个创建于 2050 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 条回复    2020-04-21 15:45:13 +08:00
    yhxx
        1
    yhxx  
       2020-04-20 16:31:10 +08:00
    你再转一次和 CDN 直接回源好像没啥区别了吧。。。
    yhxx
        2
    yhxx  
       2020-04-20 16:31:34 +08:00
    没打完就发出去了
    正常操作应该是直接把 CDN 域名写在前端代码里?
    b821025551b
        3
    b821025551b  
       2020-04-20 16:34:03 +08:00
    nginx 转发 cdn 是什么操作,把 cdn 的优势直接丢掉
    wangyzj
        4
    wangyzj  
       2020-04-20 16:35:23 +08:00
    这什么操作?
    yuzo555
        5
    yuzo555  
       2020-04-20 16:40:24 +08:00
    最正确的方式应该是直接替换调用处使用的域名,再不济也只能是 301,proxy_pass 是什么鬼?完全浪费 CDN 还多花一遍流量费用?
    saytesnake
        6
    saytesnake  
    OP
       2020-04-20 16:50:46 +08:00
    @yhxx
    @b821025551b
    @wangyzj

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

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


    @chairuosen

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

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

    之前用过 rewrite, 看来 subs_filter 方案更好
    wizardoz
        31
    wizardoz  
       2020-04-21 10:19:24 +08:00
    反了吧,Nginx 应该在 CDN 后面才对啊
    guiling
        32
    guiling  
       2020-04-21 10:21:30 +08:00
    1 、让前端替换 cdn 链接
    2 、前端提交链接或者返回给前端链接时后台替换
    yc8332
        33
    yc8332  
       2020-04-21 10:46:38 +08:00
    浪费钱。。也浪费时间。。。走 cdn 用户就不会直接到你服务器了。你还搞这个跳转干嘛。。要改前端
    roidinev
        34
    roidinev  
       2020-04-21 11:49:34 +08:00
    @wizardoz 确实。cdn 回源到 nginx,nginx 应该是被动的。楼主说的只是自己源站的配置,只是 proxy_pass 到的应该是自己的某些 web 服务器,不应该是 cdn 服务器。
    MonoLogueChi
        35
    MonoLogueChi  
       2020-04-21 15:45:13 +08:00 via Android
    第一种和第三种肯定是不对的,反代 CDN ???第二种方式还算可以,最佳方案应该是前端处理
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5689 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 01:57 PVG 09:57 LAX 17:57 JFK 20:57
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86