ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

nginx-0.1.17



Изменения в nginx 0.1.17                                          03.02.2005

    *) Добавление: модуль ngx_http_rewrite_module полностью переписан.
       Теперь можно делать редиректы, возвращать коды ошибок и проверять
       переменные и рефереры. Эти директивы можно использовать внутри
       location. Директива redirect упразднена.

    *) Добавление: модуль ngx_http_geo_module.

    *) Добавление: директивы proxy_set_x_var и fastcgi_set_var.

    *) Исправление: конфигурация location с модификатором "=" могла
       использоваться в другом location.

    *) Исправление: правильный тип ответа выставлялся только для запросов,
       у которых в расширении были только маленькие буквы.

    *) Исправление: если для location установлен proxy_pass или
       fastcgi_pass, и доступ к нему запрещался, а ошибка перенаправлялась
       на статическую страницу, то происходил segmentation fault.

    *) Исправление: если в проксированном ответе в заголовке "Location"
       передавался относительный URL, то к нему добавлялось имя хоста и
       слэш; ошибка появилась в 0.1.14.

    *) Исправление: на Linux в лог не записывался текст системной ошибки.


Комментарий.

                       geo

Описывается на уровне http. Может быть несколько переменных.

geo  name  {
     default          0;
     include          list0;
     include          list1;
     192.168.0.0/16   50;
}

Можно указывать числа или строки, например,
     192.168.0.0/16   RU;

Переменную можно передавать в "proxy_set_x_var  name" и
"fastcgi_set_var  name". Ещё можно проверять так: if ($name) { ... }
Внутри if можно задавть не только директивы rewrite, но и обычные,
сейчас можно только две:

if ($slow) {
    limit_rate   10k;
}

или

if ($no_gzip) {
    gzip  off;
}

Остальные директивы пока не работают, но добавить их достаточно быстрая,
но муторная процедура.


                       rewrite

Формат: "rewrite   regex   subst   modifier"

Если subst начинается с http://, то это редирект.
modifier могут быть следующими: last, redirect и permanent.
redirect нужен для задания subst без http://.

Можно задавать рефереры:

valid_referers  none  server_names  *.example.com/;

и затем проверять их:

if ($invalid_referer) {
    rewrite   ^/   http://www.example.com;
    или
    return   403;
}


Как кодируются всякие странные символы в rewrite, зависит от того,
будет выполнятся редирект или нет. Запрос

/test/one%20+%25%3Ftwo/three%20+%25%3Ffour?five=six%20+%25%3Fseven

будет переписан директивой
   rewrite ^/test/(.+)/(.+)$ /$1?uname=$2  last;

в "/one +%?two", и аргументы у него будут такие:

uname=three%20%2b%25%3ffour&five=six%20+%25%3Fseven

Директива rewrite ^/test/(.+)/(.+)$ /$1?uname=$2  redirect;
этот же запрос перепишет в

/one%20%2b%25%3ftwo?uname=three%20%2b%25%3ffour&five=six%20+%25%3Fseven


Игорь Сысоев
http://sysoev.ru




 




Copyright © Lexa Software, 1996-2009.