использование переменных $upstream* в директиве map?

Kirill K. nginx-forum at nginx.us
Tue May 6 16:29:21 UTC 2014


Приветствую,
Пытаюсь избежать кеширования мелких ответов от апстрима таким образом:
     map $upstream_http_content_length $dontcache {
     default 0;
     ~^\d\d$ 1;
     ~^\d$ 1;
     }

Но столкнулся с тем, что, судя по всему, nginx обрабатывает map до того, как
получает заголовки от upstream, то есть переменные типа
$upstream_http_content_length или $upstream_response_length получаются
пустыми в момент обработки map (это видно в debug-логе, по строке "http map
started"). С не-upstream переменными всё работает как задумано. 

Вопрос  — можно ли как-то добиться обработки map уже после похода к
upstream-серверу, или надёжным ли будет решение с использованием
$body_bytes_sent в качестве индикатора размера ответа апстрима?

Спасибо.

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,249869,249869#msg-249869



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