Я пытаюсь исключить 2 каталога из правила кеширования в nginx.
Итак, у меня есть это правило кеширования, которое отлично работает.
location ~* .(js|jpg|jpeg|gif|png|css|tgz|gz|rar|bz2|doc|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|woff|woff2|svg)$ {
etag on;
if_modified_since exact;
add_header Pragma "public";
add_header Cache-Control "max-age=31536000, public";
}
Проблема с этим правилом заключается в том, что он устанавливает заголовок для каждого файла jpg и png, и cms не может генерировать публичные изображения из моих основных изображений.
Итак, я хочу / пытаюсь исключить 2 каталога из правила, но я не могу заставить его работать.
location ~ ^/(out/pictures/generated/product/|out/pictures/master/product)/ {
add_header Cache-Control "no-cache, max-age=0";
}
location ~* .(js|jpg|jpeg|gif|png|css|tgz|gz|rar|bz2|doc|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|woff|woff2|svg)$ {
etag on;
if_modified_since exact;
add_header Pragma "public";
add_header Cache-Control "max-age=31536000, public";
}
Но это не работает. Если я просто оставлю это правило активным, оно сработает.
location ~ ^/(out/pictures/generated/product/|out/pictures/master/product)/ {
add_header Cache-Control "no-cache, max-age=0";
}
Получается, что правило "no-cache" всегда перезаписывается правилом типов файлов ?! Как я могу достичь своей цели?
Наконец-то разобрался. Это работает для меня:
location ~ ^/(out/pictures/generated/product/|out/pictures/master/product)/ {
location ~* .(js|jpg|jpeg|gif|png|css|tgz|gz|rar|bz2|doc|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|woff|woff2|svg)$ {
etag on;
if_modified_since exact;
add_header Pragma "public";
add_header Cache-Control "max-age=31536000, public";
}
add_header Cache-Control "no-cache, max-age=0";
}