Welcome! Log In Create A New Profile

Advanced

Re: try_files + subrequest + proxy-handler

Eugene Mychlo
April 21, 2015 05:10AM
add_after_body тут нужен исключительно для демонстрации сабреквеста.
Подобную ситуацию можно получить с любым модулем, использующим сабреквест.

http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_pass <http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_pass>

Если директива proxy_pass указана без URI, то при обработке первоначального запроса на сервер передаётся URI запроса в том же виде, в каком его прислал клиент, а при обработке изменённого URI - нормализованный URI запроса целиком:

Исходя из этого совсем не очевидно почему main request долетает до бэкенда без изменения URI, а subrequest с изменением URI.



> 21 апр. 2015 г., в 11:40, Иван Мишин <simplebox66@gmail.com> написал(а):
>
> Добрый день!
> add_after_body /duo;
> Для чего эта строка в конфиге?
> Ну а так вроде бы все правильно по логике должно выдавать "uno tres ". В чем проблема не совсем понятно
>
> 20 апреля 2015 г., 17:39 пользователь Eugene Mychlo <myc@cname.me <mailto:myc@cname.me>> написал:
> Добрый день,
>
> Столкнулся со странной поведением nginx при использовании subrequest в сочетании с try_files с proxy-хэндлером.
> В приведенной ниже конфигурации, ожидалось, что при наличии файла /tmp/tres, на запрос
>
> http://127.0.0.1:8080/uno http://127.0.0.1:8080/uno
>
> nginx вернет строку "uno duo " или "tres tres ", но никак не "uno tres ".
>
> Т.е. URI основного запроса передается без изменений (как и описано в документации), а подзапроса - нет.
> Ситуация воспроизводится на nginx версий 1.7.9 - 1.7.12.
>
> Отсюда вопрос: является ли подобное поведение задуманным или это бага?
> Будет ли меняться? И не стоит ли отметить это в документации?
>
>
>
> server {
> listen 8081;
> default_type text/html;
>
> location /uno { return 200 "uno "; }
> location /duo { return 200 "duo "; }
> location /tres { return 200 "tres "; }
> }
>
>
> server {
> listen 8080;
>
> location / {
> root /tmp;
> try_files /tres =404;
> proxy_pass http://127.0.0.1:8081 http://127.0.0.1:8081/;
> add_after_body /duo;
> }
> }
>
>
>
> --
> Regards,
> Eugene Mychlo MYC-RIPE EAMYC-RIPN
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru@nginx.org <mailto:nginx-ru@nginx.org>
> http://mailman.nginx.org/mailman/listinfo/nginx-ru http://mailman.nginx.org/mailman/listinfo/nginx-ru
> _______________________________________________
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

try_files + subrequest + proxy-handler

Eugene Mychlo April 20, 2015 10:40AM

Re: try_files + subrequest + proxy-handler

Иван Мишин April 21, 2015 04:42AM

Re: try_files + subrequest + proxy-handler

Eugene Mychlo April 21, 2015 05:10AM

Re: try_files + subrequest + proxy-handler

Maxim Dounin April 21, 2015 03:12PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 211
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready