将 URL 重定向到 CDN 存储

将 URL 重定向到 CDN 存储

我的 nginx 服务器上有结构文件夹:图片网址

https://example.com/wp-content/uploads/image.jpg

https://example.com/wp-content/uploads/WP-data/data/employees/per-005/9032.jpg

我希望它重定向到我的 CDN 并始终获取该 CDN 上的图片。

https://cdn.example.com/image.jpg

https://cdn.example.com/WP-data/data/employees/per-005/9032.jpg

我尝试使用此设置,但是不起作用。

location ~ ^(/wp-content/themes|/wp-content/uploads)/.*\.(jpe?g|gif|css|png|js|ico|pdf|m4a|mov|mp3)$ {
             rewrite ^ http://cdn.example.com$request_uri?
             permanent;
             access_log off;
      }

答案1

欢迎来到 ServerFault!

为了删除/wp-content/uploads(和/wp-content/themes)并将生成的 URL 重定向到 CDN,以下代码应该可以工作...

location ~ ^(/wp-content/themes|/wp-content/uploads)(?'short_url'/.*\.(jpe?g|gif|css|png|js|ico|pdf|m4a|mov|mp3))$ {
     return 301 http://cdn.example.com$short_url;
     access_log off;
}

这在评估正则表达式时使用“命名捕获”方法。不需要rewrite语句,因为我们已经在中有一个正则表达式location。Nginx 使用以下语法支持命名捕获:

?<name>     Perl 5.10 compatible syntax, supported since PCRE-7.0
?'name'     Perl 5.10 compatible syntax, supported since PCRE-7.0
?P<name>    Python compatible syntax, supported since PCRE-4.0

相关内容