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

2020-04-20 16:29:12 +08:00
 saytesnake

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;
}
5132 次点击
所在节点    NGINX
35 条回复
superrichman
2020-04-20 18:19:18 +08:00
直接把前端页面地址改成 cdn 的。就好像给你在 tb 别人买东西直接填别人的地址寄过去就好了。你现在的做法是让 tb 寄到你自己家然后再寄给别人。
xmlf
2020-04-20 18:25:48 +08:00
你直接用 sub filter,把页面地址替换掉就行了
sadfQED2
2020-04-20 18:32:38 +08:00
令人窒息的操作.jpeg 反代 cdn 我想都不敢想
xiaoz
2020-04-20 18:58:36 +08:00
subs_filter 替换比较省事
Aruforce
2020-04-20 19:21:47 +08:00
降智打击…你这么做是把 nginx 当成 dns 用了啊……
jugelizi
2020-04-20 19:26:19 +08:00
什么叫前端不把链接更换 难道你换不了?
0312birdzhang
2020-04-20 19:30:17 +08:00
大概是没明白什么是 csn
你要把域名的 dns 改为 cdn 给你的 ip 或者域名,给 cdn 一个源站地址
用户请求这个链接直接走 cdn,没有再回到源站拿
0312birdzhang
2020-04-20 19:30:55 +08:00
@0312birdzhang 手机打字 d 打成了 s……
saytesnake
2020-04-20 19:49:35 +08:00
@xmlf
@xiaoz

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

之前用过 rewrite, 看来 subs_filter 方案更好
wizardoz
2020-04-21 10:19:24 +08:00
反了吧,Nginx 应该在 CDN 后面才对啊
guiling
2020-04-21 10:21:30 +08:00
1 、让前端替换 cdn 链接
2 、前端提交链接或者返回给前端链接时后台替换
yc8332
2020-04-21 10:46:38 +08:00
浪费钱。。也浪费时间。。。走 cdn 用户就不会直接到你服务器了。你还搞这个跳转干嘛。。要改前端
roidinev
2020-04-21 11:49:34 +08:00
@wizardoz 确实。cdn 回源到 nginx,nginx 应该是被动的。楼主说的只是自己源站的配置,只是 proxy_pass 到的应该是自己的某些 web 服务器,不应该是 cdn 服务器。
MonoLogueChi
2020-04-21 15:45:13 +08:00
第一种和第三种肯定是不对的,反代 CDN ???第二种方式还算可以,最佳方案应该是前端处理

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/664333

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX