sysmerge IT

30 авг. 2016 г.

nginx кеширование статики только для части location'a с помощью вложенных location

Довольно банальная задача - добавить определенные правила для location в nginx. К примеру банальный код
 location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|ttf|otf|webp|woff|txt|csv|rtf|doc|docx)$ {  
       root      /var/www/site.ru/;  
       access_log   /var/log/httpd/sites/site.ru.log combined;  
       access_log   /var/log/httpd/sites/site.ru..bytes bytes;  
       try_files       $uri @fallback;  
     }  

Допустим нам пригодилось включить кеширование исключительно для jpeg, png и gif картинок. Сроком 1 день. Самым простым и "красивым" решением будет подобная конструкция
 location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|ttf|otf|webp|woff|txt|csv|rtf|doc|docx)$ {  
       root      /var/www/site.ru/;  
       access_log   /var/log/httpd/sites/site.ru.log combined;  
       access_log   /var/log/httpd/sites/site.ru..bytes bytes;  
       try_files       $uri @fallback;  
       location ~* ^.+\.(jpg|jpeg|gif|png|)$ {  
             expires     1d;  
        }  
     }  

Это избавляет от необходимости писать дублирующие локейшены первого уровня и делает инструкции более читаемыми.