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, Иван Мишин <simplebo...@gmail.com> написал(а):
> 
> Добрый день!
>  add_after_body /duo;
> Для чего эта строка в конфиге?
> Ну а так вроде бы все правильно по логике должно выдавать  "uno  tres ". В 
> чем проблема не совсем понятно
> 
> 20 апреля 2015 г., 17:39 пользователь Eugene Mychlo <m...@cname.me 
> <mailto:m...@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

Ответить