ПРОЕКТЫ 


  АРХИВ 


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]

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



Hello!

On Wed, 17 Oct 2007, AlexeyK wrote:

17.10.07, Maxim Dounin<mdounin@xxxxxxxxxx> написал(а):
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'ы
с регулярными выражениями в конфиге отсутствовали.

Не нервничайте так, я прекрасно отдаю себе отчет в том, что говорю.

Чем вам location ~ \.php$ { proxy_pass ... } не handler-location? Мне
удобно называть вещи своими именами.

Проблема именно в том, что вы называете вещи не своими именами. После чего удивляетесь, что они ведут себя не так, как должно вести себя вещи, чьими именами вы их назвали.

И решения, которые вы представили тут, я писал в том самом месте, куда
идут ссылки. И я прекрасно понимаю, что мне нужно сделать, чтобы
защитить те же пресловутые php скрипты в локейшне.

И если мне вообще ото всех нужно спрятать мои скрипты, то скорее всего
в папку htdocs их я ложить не буду.

А если вообще не использовать локейшны, тогда зачем вообще nginx?
Я могу с таким же успехом использовать 0w. Функционал будет примерно
на том же уровне.

Не использовать location'ы != не использовать location'ы с регулярными выражениями.

Дело в другом.

Локейшны - очень гибкая и хорошая штука, но в данный момент люди все
больше и больше наталкиваются на ограничения, о которых сейчас идет
речь. Мне, например, интересно знать мнение Игоря Сысоева каким
образом будет складываться их дальнейшая судьба, будут ли учтены
желания пользователей в этом вопросе.

Недавно я обсуждал эту проблему и вытекающие с Константином Архиповым
(voxus), он высказался за то, чтобы написать в рассылку и получить
ответ у Игоря.

Таки кто вам помешал это сделать -- вместо того чтобы писать малосвязные некорректные утверждения в ответ на объяснение как решить конкретную проблему?

Maxim Dounin



 




Copyright © Lexa Software, 1996-2009.