Re: nginx, uri и иврит

Maxim Dounin mdounin на mdounin.ru
Вт Авг 25 12:17:46 UTC 2015


Hello!

On Tue, Aug 25, 2015 at 07:42:10AM -0400, Denis76 wrote:

> День добрый. Нужно написать реврайт для некоторый uri на иврите.
> В логе nginx обращения представлены в виде
> /%d7%a1%d7%9c%d7%99%d7%97%d7%94,+%d7%9e%d7%94+%d7%94%d7%a9%d7%a2%d7%94?!.html
> 
> однако, если делаю что-то типа такого для теста:
> if ($uri =
> "/%d7%a1%d7%9c%d7%99%d7%97%d7%94,+%d7%9e%d7%94+%d7%94%d7%a9%d7%a2%d7%94?!.html")
> {
> return 403;
> }
> или
> map "$uri" $bad {
> "/%D7%A1%D7%9C%D7%99%D7%97%D7%94,+%D7%9E%D7%94+%D7%94%D7%A9%D7%A2%D7%94?!.html"
> "1";
> }
> 
> то правила не срабатывают. Как я понимаю проблема в экранировании некоторых
> символов, коих тут вижу ",%!?." какие из них должны быть экранированы и дело
> ли вообще в этом?

Значение переменной $uri - в раскодированном виде, т.е. проверять 
надо текст, а не %-escaped строку.  Если хочется проверять 
ровно то значение, которое передал клиент, то следует использовать 
переменную $request_uri (note: включает в себя аргументы запроса).

Документация тут:

http://nginx.org/r/$uri
http://nginx.org/r/$request_uri

-- 
Maxim Dounin
http://nginx.org/



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