Перенаправление url на хранилище CDN

У меня есть структурные папки на моем сервере 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;
      }
0
задан 19 June 2021 в 11:54
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 , поскольку у нас уже было регулярное выражение в месте . 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
0
ответ дан 28 July 2021 в 14:38

Теги

Похожие вопросы