Назад | Перейти на главную страницу

Выборочное кеширование обратного прокси-сервера nginx - часть 2

Следуя предыдущий вопрос по этой теме, Я пытаюсь настроить кеширующий обратный прокси. Это будет сидеть перед множеством серверов. Следовательно, я хочу, чтобы как можно большая часть конфигурации находилась в общих сниппетах. Однако Сандор Мартин указал, что proxy_pass не будет унаследован.

Так что я не могу этого сделать ....

 server {
   location / {
     ...
     include snippets/proxyconfig.conf ;
     proxy_pass http://origin.example.com ;
     include snippets/cachestatic.conf ;
   }  
 }

Где cachestatic - это блок местоположения location ~* \.(gif|png|js|css)$ {...}

К сожалению, я не могу просто использовать заголовки кеширования, возвращаемые исходным сервером, в качестве основы для кеширования. Есть несколько очень больших файлов содержимого, которые я не хочу кэшировать на прокси.

Итак, конфигурация кеширования должна находиться в том же блоке Location, что и директива proxy_pass. Но в то время как первое является глобальным, второе зависит от конкретного сайта.

Могу я решить это с помощью размещение регулярного выражения Location для кэшируемого содержимого в переменной, объявленной в блоке сервера (или выше)?

Тогда это будет означать, что файл conf для моего сайта будет выглядеть так:

 server {
   location / {
     ...
     include snippets/proxyconfig.conf ;
     proxy_pass http://origin.example.com ;
     location ~* $cacheable_type {
        include snippets/inline_caching.conf ;
        proxy_pass http://origin.example.com ;
     }
   }  
 }