Странность proxy, rewrite, $request_uri
Igor Sysoev
is at rambler-co.ru
Sun Jul 29 16:03:21 MSD 2007
On Sun, Jul 29, 2007 at 03:15:32PM +0400, Alexey Rymonin wrote:
> Имею следующее
> ........
> location /servlets/ {
> rewrite ^(.*)$ $1?tom_req_uri=$request_uri break;
>
> proxy_pass http://127.0.0.1:8080;
> proxy_redirect off;
>
> proxy_set_header Host $host;
> proxy_set_header X-Real-IP $remote_addr;
> }
> ........
> rewrite ^/search/candidate?$ /servlets/Search?file=/search/candidate.htt&action=2&main=100&base=102&hrefname=resume&searchcandidate=true last;
> ........
>
> следующий запрос
> http://www.e-prof.ru/search/candidate?seach=true&query=%F2%E5%F1%F2%EE%E2%EE%E5
>
> в результате получаю что tom_req_uri = /search/candidate?seach=true
> именно этому же равняется $request_uri (раз такой результат то
> это в общем логично)... при этом он подставляет всегда первый
> параметр из запрос... в примере это был seach=true
>
> почему такое происходит и как этого можно избежать?
В моих тестах бэкенду уходит:
/servlets/Search?tom_req_uri=/search/candidate?seach=true&query=%F2%E5%F1%F2%EE%E2%EE%E5&file=/search/candidate.htt&action=2&main=100&base=102&hrefname=resume&searchcandidate=true&seach=true&query=%F2%E5%F1%F2%EE%E2%EE%E5
Касти, я бы сделал
location = /search/candidate {
rewrite ...;
}
И зачем "?" в ^/search/candidate?$ ? Аргументы никогда не проверяются в rewrite.
--
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list