<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class="">Доброе утро!</div><div class=""><br class=""></div><div class="">Строим вот такой просто кэшер уменьшенной статики. Для простоты добавляем это в nginx.conf.default</div><div class=""><br class=""></div><div class="">resolver 8.8.8.8;</div><div class=""><br class=""></div><div class="">server {</div><div class=""><span class="Apple-tab-span" style="white-space:pre">  </span>listen *:80;</div><div class=""><span class="Apple-tab-span" style="white-space:pre">      </span>server_name “~^cache-(\d).<a href="http://domain.ru" class="">domain.ru</a>$";</div><div class=""><span class="Apple-tab-span" style="white-space:pre">     </span>set $store_id $1;</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre">  </span>root /wwwroot/<a href="http://domain.ru/cache-$store_id/a/" class="">domain.ru/cache-$store_id/a/</a>;</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space: pre;">   </span>location “~^.+\.jpg$" {</div><div class=""><span class="Apple-tab-span" style="white-space:pre">            </span>error_page 404 /store$uri;</div><div class=""><span class="Apple-tab-span" style="white-space:pre">                </span>}</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre">  </span>location "~^\/store/(.+\.jpg)$" {</div><div class=""><span class="Apple-tab-span" style="white-space:pre">               </span>internal;</div><div class="">#<span class="Apple-tab-span" style="white-space:pre">                </span>proxy_store /wwwroot/<a href="http://domain.ru/$store_id/a/$1" class="">domain.ru/$store_id/a/$1</a>;</div><div class=""><span class="Apple-tab-span" style="white-space:pre">             </span>proxy_pass <a href="http://$host/resize/$1" class="">http://$host/resize/$1</a>;</div><div class=""><span class="Apple-tab-span" style="white-space:pre">          </span>}</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre">  </span>location "~^\/resize/(.+\.jpg)$" {</div><div class=""><span class="Apple-tab-span" style="white-space:pre">              </span>image_filter crop 140 140;</div><div class=""><span class="Apple-tab-span" style="white-space:pre">                </span>proxy_pass <a href="http://ori-$store_id.domain.ru/$1" class="">http://ori-$store_id.domain.ru/$1</a>;</div><div class=""><span class="Apple-tab-span" style="white-space:pre">            </span>proxy_set_header Cookie '';</div><div class=""><span class="Apple-tab-span" style="white-space:pre">               </span>proxy_set_header User-Agent '';</div><div class=""><span class="Apple-tab-span" style="white-space:pre">           </span>}</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div class=""><br class=""></div><div class="">Всё работает, ничего не кэшируется. Раскомментирую proxy-store и получается ад: в $store_id попадает всё, что матчится (.+\.jpg) и складывается в '/wwwroot/<a href="http://domain.ru/cache-/path/to/original/jpg/request'" class="">domain.ru/cache-/path/to/original/jpg/request'</a>, например. То есть $store_id почему-то перезаписывается следующим $1. Почему так и как это исправить, кроме как делать отдельный server{} для каждого $store_id?</div><div class=""><br class=""></div><div class="">Спасибо!</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div></body></html>