Исключить папки из кэширования

В Plesk в разделе Дополнительные директивы nginx я добавил следующие настройки кэша.

location ~* .(jpg|js|css)$ { #shortened
    etag on;
    if_modified_since exact;
    add_header Pragma "public";
    add_header Cache-Control "max-age=31536000, public";
}

Но в wp-admin у меня переписаны URL-адреса файлов этого типа.
Как исключить wp-admin/* и wp-includes/* из блока выше?

Немного предыстории, я запускаю мультисайт WordPress в подпапке. так что
maildomain.com/wp-admin/stylesheet.css на самом деле находится в
maildomain.com/wp/wp-admin/stylesheet.css


person janw    schedule 03.07.2018    source источник


Ответы (1)


Вы можете попробовать поэкспериментировать с параметром местоположения перед кэшированием директив, например:

location ^~ /wp-admin/ {
}

location ~* .(jpg|js|css)$ { #shortened
etag on;
if_modified_since exact;
add_header Pragma "public";
add_header Cache-Control "max-age=31536000, public";
}

УПД. Да, проверил в своей тестовой лаборатории и получил ошибку 403. Я думаю, что пустой секции недостаточно, и некоторые директивы должны быть добавлены явно.

Удалось добавить исключение, как показано ниже:

location ~* "^/(?!wp-admin/|wp-includes/).*\.(jpg|js|css)$" { #shortened
etag on;
if_modified_since exact;
add_header Pragma "public";
add_header Cache-Control "max-age=31536000, public";
}
person Elvis Plesky    schedule 04.07.2018
comment
Это само по себе ломает весь wp-admin - person janw; 04.07.2018
comment
Да, это сработало. Требуется только одна небольшая настройка, чтобы также исключить wp-includes, который также находится под /wp/. Это должно быть location ~* "^/(?!wp-admin/|wp-includes/).*\ - person janw; 18.07.2018
comment
Это великолепно! ) - person Elvis Plesky; 18.07.2018