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