Hello! On Mon, Feb 11, 2019 at 12:40:53AM +0300, Vladimir Sopot wrote:
> Строим вот такой просто кэшер уменьшенной статики. Для простоты > добавляем это в nginx.conf.default > > resolver 8.8.8.8; > > server { > listen *:80; > server_name “~^cache-(\d).domain.ru$"; > set $store_id $1; Так делать в сколько-нибудь сложных конфигурациях нельзя. После любого внутреннего перенаправления - серверные rewrite'ы отрабатают заново, и "set" будет использовать $1 от последнего выполневшегося регулярного выражения. И в вашем случае это будет совсем не регулярное выражение из server_name. Если хочется вытаскивать какую-либо информацию из server_name - это надо делать с помощью named captures, как-то так: server_name ~^cache-(?<store_id>\d)\.domain\.ru$; [...] > Всё работает, ничего не кэшируется. Раскомментирую proxy-store и > получается ад: в $store_id попадает всё, что матчится (.+\.jpg) > и складывается в > '/wwwroot/domain.ru/cache-/path/to/original/jpg/request' > <http://domain.ru/cache-/path/to/original/jpg/request'>, > например. То есть $store_id почему-то перезаписывается следующим > $1. Почему так и как это исправить, кроме как делать отдельный > server{} для каждого $store_id? См. выше. Не надо использовать нумерованные выделения в сколько-нибудь сложных конструкциях. В декларативном конфиге nginx'а предугадать, какое регулярное выражение было выполнено последним - редко когда возможно, и подчас их их использование ведёт к появлению проблем в самых неожиданных местах. -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru