Hello!

On Tue, Jun 14, 2016 at 07:04:50AM -0400, izlom wrote:

> Здравствуйте!
> 
> Имею два location  - корневой и тест. В обоих указан перл но в корневом еще
> и бекенд. Проблема в том, что перл работает только при запросе GET /test, а
> при запросе GET /  перл не обрабатывается. 
> 
> 
> location / {
>     perl hello::test;
>     proxy_pass      http://$backend;
> }
> 
> 
> location /test {
>     perl hello::test;
> }
> 
> Как вызывать perl приоритетнее proxy?

Безусловный обработчик может быть только один.  Если указано 
больше одного, как в случае "location /" выше, будет работать тот, 
который указан последним, т.к. просто переустановит обработку на 
себя.

Если вы хотите, чтобы отрабатывал код на Perl, а потом по каким-то 
условиям срабатывало проксирование - стоит подумать об 
альтернативных враиантах записи того, что вы хотите сделать:

- использовать perl_set и строить дальнейшую обработку в 
  зависимости от результата вычисления переменной;

- при необходимости в коде на Perl делать перенаправление с 
  помощью $r->internal_redirect().

Подробнее в документации тут:

http://nginx.org/ru/docs/http/ngx_http_perl_module.html#perl_set
http://nginx.org/ru/docs/http/ngx_http_perl_module.html#methods

-- 
Maxim Dounin
http://nginx.org/

_______________________________________________
nginx-ru mailing list
[email protected]
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответить