Nginx 将图片网址从子域重定向到 Cloudfront

问题描述 投票:0回答:2

我需要有关 nginx 重写旧链接的快速帮助。

旧链接:http://widgets.domain.com/person/106400.jpg

新链接:http://xxxxxxx.cloudfront.net/old/widgets/106400.jpg

谢谢!

nginx url-rewriting
2个回答
0
投票

我相信你需要重定向而不是重写,因为域完全改变,这是所有

jpg
文件的简单重定向规则,如果有更好的匹配告诉我,我会改变我的答案。

server {
  server_name widgets.example.com;
  location ~ \.jpg$ {
    return 301 http://example.cloudfront.net/old$request_uri;
  }
}

编辑:删除

/person

的编辑
server {
  server_name widgets.example.com;
  location ^~ /person/(.*\.jpg) {
    return 301 http://example.cloudfront.net/old/widgets$1;
  }
}

0
投票

给定答案的唯一问题是浏览器缓存 301 重定向的时间长短取决于浏览器的类型。

例如,如果您正在运行多个 CDN 并且想要切换到新的 CDN,则需要在 NGINX AND Cloudfront 上对新 CDN 进行 301,或者在缓存中拥有该 CDN 的用户只需要记住 301->云前。

据我所知,NGINX 中还有另外两种方法可以避免此问题:

如果您确切知道要替换什么,可以使用 ngx_http_sub_module

如果您想在替换中使用正则表达式或模式匹配,您可以使用名为 Substiutions

的社区模块
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.