我的 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