Re: Непонятное в proxy pass
Maxim Dounin
mdounin at mdounin.ru
Sat Feb 23 18:05:52 UTC 2013
Hello!
On Sat, Feb 23, 2013 at 12:45:22PM -0500, bodomic wrote:
> Приветствую,
>
> Столкнулся со странным и, вроде бы, не описанным поведением в proxy_pass.
> Мне нужно пропустить через image_filter картинки из mogile, сам этот
> функционал прекрасно работает. Но когда мне нужно ввести вариации - а именно
> есть две разных локации, из которых надо брать такие картинки, в зависимости
> от uri - появляется странное.
>
> Итак, локация, которая работает:
> location /resize/ {
> expires max;
> image_filter_buffer 15M;
> image_filter resize $arg_width $arg_height;
> proxy_pass
> http://unix:/var/run/mogile_nginx_socket:/mogstore_photo/;
> }
> Локация, которая не работает (ввожу переменную $mogpart, для наглядности
> прямо в локации):
> location /resize/ {
> set $mogpart photo;
> expires max;
> image_filter_buffer 15M;
> image_filter resize $arg_width $arg_height;
> proxy_pass
> http://unix:/var/run/mogile_nginx_socket:/mogstore_$mogpart/;
> }
> Отличия от первого варианта: "set $mogpart photo;" и эта же переменная в
> proxy_pass.
> Вместо "часть нормализованного URI запроса, соответствующая location,
> заменяется на URI, указанный в директиве", весь URI удаляется и запрос идёт
> на /mogstore_photo/. Без остального URI. Это видно в логе - там GET
> /mogstore_photo/ 404.
>
> Подскажите, пожалуйста, это я чего-то не дочитал в документации, или это не
> описанное поведение?
> Ну и - что делать? :)
Использование переменных proxy_pass - включает отдельный режим
работы. При использовании в proxy_pass переменных - URI задаётся
полностью, http://nginx.org/r/proxy_pass/ru:
"Имя сервера, его порт и передаваемый URI можно также полностью
задать с помощью переменных"
Решение - либо не использовать переменные, либо задать URI
полностью.
--
Maxim Dounin
http://nginx.com/support.html
Подробная информация о списке рассылки nginx-ru