try_files + subrequest + proxy-handler

Eugene Mychlo myc at cname.me
Mon Apr 20 14:39:18 UTC 2015


Добрый день,

Столкнулся со странной поведением nginx при использовании subrequest в сочетании с try_files с proxy-хэндлером.
В приведенной ниже конфигурации, ожидалось, что при наличии файла  /tmp/tres,  на запрос

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;
            add_after_body /duo;
        }
    }



--
Regards,
Eugene Mychlo MYC-RIPE EAMYC-RIPN



Подробная информация о списке рассылки nginx-ru