› 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 · 6430 views
    This topic created in 2395 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
    yhxx
    Apr 20, 2020
    1
    你再转一次和 CDN 直接回源好像没啥区别了吧。。。
    yhxx
    yhxx
    Apr 20, 2020
    2
    没打完就发出去了
    正常操作应该是直接把 CDN 域名写在前端代码里?
    b821025551b
    b821025551b
    Apr 20, 2020
    3
    nginx 转发 cdn 是什么操作,把 cdn 的优势直接丢掉
    wangyzj
    wangyzj
    Apr 20, 2020
    4
    这什么操作?
    yuzo555
    yuzo555
    Apr 20, 2020
    5
    最正确的方式应该是直接替换调用处使用的域名,再不济也只能是 301,proxy_pass 是什么鬼?完全浪费 CDN 还多花一遍流量费用?
    saytesnake
    saytesnake
    OP
    Apr 20, 2020
    6
    @yhxx
    @b821025551b
    @wangyzj

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

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


    @chairuosen

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

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

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