Embedded perl совместно с проксированием
Vladimir Stackov
amigo на lnetw.ru
Ср Авг 10 20:48:25 UTC 2011
Приветствую,
возникло желание использовать встроенный перл совместно с директивой
proxy_pass, то есть сначала производит некоторые манипуляции вызываемый
модуль перла, а затем запрос, в случае возврата DECLINED, переходит к
бэкэнду.
Но оказалось, что не так всё просто:
всё дело в том, что если директива на выполнение модуля перла находится
перед директивой proxy_pass (i.e. perl smth:sub;\nproxy_pass
http://..;), то в этом случае модуль просто не исполняется. Если же
наоборот, то есть proxy_pass перед perl, то в этом случае perl не
вызывается.
В случае, если в локейшене используется отдача статики с директивой
root, то всё работает корректно.
В качестве простейшего решения проблемы решил сделать возврат из модуля
кода ошибки 505, если требуется передача запроса к бэкэнду:
location / {
perl cp::handler;
error_page 505 = @index;
}
location @index {
proxy_pass http://127.0.0.1:8197;
}
Является ли подобное исключающее взаимодействие директив proxy_pass и
perl нормой и если да, то какие возможные пути обхода наиболее
корректны, кроме вышеприведённого и танцев с бубном при использовании
proxy_set и условий для передачи в бэкенд?
Спасибо.
--
Vladimir Stackov <amigo на lnetw.ru>
Подробная информация о списке рассылки nginx-ru