Re: Re[2]: location... не понятно

Maxim Dounin mdounin at mdounin.ru
Wed Oct 17 19:09:14 MSD 2007


Hello!

On Wed, 17 Oct 2007, AlexeyK wrote:

> Вы знаете, без разницы, я об этом как-то писал в рассылку, но письмо
> осталось без внимания.

> Есть, к примеру, 2 локейшна, один хандлер пхп

Ещё раз для тех кто не смотря ни на что всё-таки не понял: в nginx'е НЕТ 
никаких "хандлеров". Есть ТОЛЬКО location'ы. И запрос выполняется в 
контексте одного конкретного location'а.

Как написать location'ы так, чтобы авторизация срабатывала и для статики, 
и для проксируемых php скриптов - тут неоднократно говорилось:

location /phpmyadmin/ {
     deny all;
     ...
}
location ~ ^/phpmyadmin/.*\.php {
     deny all;
     fastcgi_pass ...
     ...
}

И убедится что "location ~ ^/phpmyadmin/.*\.php" стоит перед другими 
location'ами с регулярными выражениями.

Если хочется действительно deny all - т.е. просто всё закрыть, то можно 
ещё сделать

location ^~ /phpmyadmin/ {
     deny all;
}

В этом случае location'ы с регулярными выражениями проверяться не будут.

Подробнее о том как писать location'ы и как именно выбирается location, в 
контексте которого будет обработан запрос, можно прочитать тут:

http://www.sysoev.ru/nginx/docs/http/ngx_http_core_module.html#location

> http://www.lexa.ru/nginx-ru/msg13656.html вот письмо, и еще одно
> http://www.lexa.ru/nginx-ru/msg13621.html, в которых обсуждалась
> данная проблема, но ответы так и не были найдены/даны.

Обсуждалась совсем другая проблема. А именно - как бы такое сделать, чтобы 
лишний location не писать. Ответ - никак.

Совсем правильный ответ - перепроектировать систему так, чтобы location'ы 
с регулярными выражениями в конфиге отсутствовали.

Maxim Dounin





More information about the nginx-ru mailing list