Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Как обойтись без rewrite в location-е с regexp-ом?
- To: nginx-ru@xxxxxxxxx
- Subject: Как обойтись без rewrite в location-е с regexp-ом?
- From: Михаил Монашёв <postmaster@xxxxxxxxxxxxx>
- Date: Sat, 2 Feb 2013 23:18:36 +0400
- Dkim-signature: v=1; a=rsa-sha1; c=relaxed; d=softsearch.ru; h=date:from :reply-to:message-id:to:subject:mime-version:content-type :content-transfer-encoding; s=main; i=postmaster@xxxxxxxxxxxxx; bh=4WXpiaJIR/WxqTLOXg9T3xP+CYA=; b=XEifWQFuXovvQs7EvLG607SkJf+U s+d+z/CjFfBil9PATHz3T+pM8sLPQ6TKmfQXJuDQ9L+6pU41ZRTwIpFWPjiBZ4wL oN7b1JUJ/LZrIr3PA1kpzgjACQ9HwaRwL0e6ENxeXWSxeGhKwKoOuVa5uK/+DJSi rDZhQ+Onr7lxGlo=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=softsearch.ru; h=date:from :reply-to:message-id:to:subject:mime-version:content-type :content-transfer-encoding; q=dns; s=main; b=hIRnKWjDFMBUqzk8kPT zcDd3bQgLhDi7wQgMjZYj8QvYGzX/OiTf6jYoMj5HxgSfnOnrHKT87YPzgZPGebW jxfqv1+jmHA0/5BoaZ29K641qrDBzNBRS2HhRZxRupN5cRTlNKQs63zBaZhFyv0c Hbpw2eHdxMnZrkK6i0tKxAVY=
Здравствуйте.
Задача простая: выделить из location-а, заданного регэкспом, часть и её
использовать в proxy_pass. В голову приходит вот такой конфиг:
location ~ ^/dir(?<ruri>/.+)$ {
proxy_pass http://1.2.3.4:80$ruri;
}
Но проксируется не $ruri , а исходный запрос, начинающийся на /dir.
Что соответствует документации:
> В ряде случаев часть URI запроса, подлежащую замене, выделить невозможно:
>
> Если location задан регулярным выражением.
>
> В этом случае директиву следует указывать без URI.
>
> Если внутри проксируемого location с помощью директивы rewrite изменяется
> URI, и именно с этой конфигурацией будет обрабатываться запрос (break):
>
> location /name/ {
> rewrite /name/([^/]+) /users?name=$1 break;
> proxy_pass http://127.0.0.1;
> }
>
> В этом случае URI, указанный в директиве, игнорируется, и на сервер
> передаётся изменённый URI запроса целиком.
Т.е. выходит, что нужен второй регэксп, который изменил бы $uri.
А можно без него обойтись? Т.е. не игнорировать заданный в директиве
uri, а использовать именно его. Его ведь для того и указывают, чтобы
использовать, а не игнорировать. Тогда в локейшнах, заданных
регэкспами, можно будет отказаться rewrite и сэкономить процессор на
запуске ещё одного регэкспа.
--
С уважением,
Михаил mailto:postmaster@xxxxxxxxxxxxx
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|