Welcome! Log In Create A New Profile

Advanced

Re: proxy pass - пропадают аргументы

Maxim Dounin
February 22, 2011 09:52PM
Hello!

On Tue, Feb 22, 2011 at 06:31:03PM -0500, green wrote:

> Когда делаю что-то подобное:
>
> location ~ ^/test(/.*\.php)$ {
>     proxy_pass http://cgi$1;
> }
>
> То в запросе не передаются аргументы,
> т.е. запрос:
> http://server/test/xxx.php?param
> преобразуется в:
> http://cgi/xxx.php
> (без аргументов)

Если вы задаёте url в proxy_pass с использованием переменных - вы
задаёте его полностью. Поскольку аргументы в формируемый url вы
не включили - их там и нет.

Отдельно при таком способе задания доставит необходимость
самостоятельно следить за корректностью получаемого url'а, в
частности - escape'ингом спецсимволов. Вышеприведённый конфиг
замечательно ломается от запросов вида "/test/blah%0D%OA.php".

Ну и в качестве дополнительного бонуса - соответствующий upstream
должен быть либо явно описан, либо должен быть настроен resolver
(и соответственно будет делаться resolve регулярно).

Вообще, proxy_pass с переменными - он для случаев, когда хочется
странного, а не для нормальной работы. Не надо его использовать
без нужды.

> Если же делать:
>
> location ~ \.php$ {
>     rewrite ^/test(/.*\.php)$ $1 break; # без него тоже
> передаётся, но необрезанное
>     proxy_pass http://cgi;
> }
>
> То всё передаётся. В документации
> ничего вроде не нашёл про это, зато там
> написано, что если указывать proxy_pass без
> uri, то ему передастся запрос as-is, без
> сокращения слешей и т.п.
> Это баг или фича? И что меньшее зло - rewrite
> или добавлять $is_args$args в proxy_pass?

Правильно - разделять код и данные, и делать

location /test/ {
proxy_pass http://backend/;
}

Если нужно проксировать только *.php, то rewrite - меньшее зло.

Maxim Dounin

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

Re: proxy pass - пропадают аргументы

Maxim Dounin February 22, 2011 09:52PM

Re: proxy pass - пропадают аргументы

green February 27, 2011 12:59PM

Re: proxy pass - пропадают аргументы

Maxim Dounin February 28, 2011 05:16AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 178
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 500 on July 15, 2024
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready