У меня есть структурные папки на моем сервере nginx: URL изображения
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;
}
Добро пожаловать в 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
, поскольку у нас уже было регулярное выражение в месте
. 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