proxy_store и переменные

Vladimir Sopot jd на jdwuzhere.ru
Вс Фев 10 21:40:53 UTC 2019


Доброе утро!

Строим вот такой просто кэшер уменьшенной статики. Для простоты добавляем это в nginx.conf.default

resolver 8.8.8.8;

server {
	listen *:80;
	server_name “~^cache-(\d).domain.ru$";
	set $store_id $1;

	root /wwwroot/domain.ru/cache-$store_id/a/;

	location “~^.+\.jpg$" {
		error_page 404 /store$uri;
		}

	location "~^\/store/(.+\.jpg)$" {
		internal;
#		proxy_store /wwwroot/domain.ru/$store_id/a/$1;
		proxy_pass http://$host/resize/$1;
		}

	location "~^\/resize/(.+\.jpg)$" {
		image_filter crop 140 140;
		proxy_pass http://ori-$store_id.domain.ru/$1;
		proxy_set_header Cookie '';
		proxy_set_header User-Agent '';
		}
	}

Всё работает, ничего не кэшируется. Раскомментирую 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?

Спасибо!







----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20190211/c5dd8355/attachment.html>


Подробная информация о списке рассылки nginx-ru