Nginx То ли лыжи не едут, то ли я. basic auth

Фанат

oncle terrible
Команда форума
PHP:
location  /  {
  auth_basic            "Restricted";
  auth_basic_user_file  htpasswd;
}
при обращении к / честно выскакивает окошко
при обращении к /phpinfo.php... честно показывает содержимое!

я так понимаю, это потому что есть отдельный локейшен ~ \.php, в котором никаких ограничений не прописано!
Кто виноват и что это было, папа?

Собственно, вопрос - как закрыть виртуалхост целиком со всеми чадами и домочадцами?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
А они у тебя в нужном порядке обрабатываются-то?
 

Фанат

oncle terrible
Команда форума
Ну, вообще \.php ниже, чем /
как в дефолтном конфиге, в общем.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
The order in which location directives are checked is as follows:

Directives with the "=" prefix that match the query exactly (literal string). If found, searching stops.
All remaining directives with conventional strings. If this match used the "^~" prefix, searching stops.
Regular expressions, in the order they are defined in the configuration file.
If #3 yielded a match, that result is used. Otherwise, the match from #2 is used.

Если верить этому — то это ожидаемое поведение O_O
 

Фанат

oncle terrible
Команда форума
ну, я всегда считал, что satisfy -это пускать ИЛИ по айпи, ИЛИ по паролю.

А мне надо просто закрыть хост паролем. Первое вот ближе, похоже - сейчас разбираюсь, какую псевдографику вписать. Пока получил тупой 403 без запроса пароля %)
 

A1x

Новичок
а как сделать пароль на два отдельных файла? например admin.php, edit.php
а все остальные чтобы было видно без пароля

у меня сейчас так
location ~ (admin|edit)\.php {
auth_basic "restricted area";
auth_basic_user_file "/home/site/.htusers";
}

location / {
root /home/site/web;
index index.php;
if (!-e $request_filename) {
rewrite ^/(.*) /index.php last;
}
}

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;

.............
}
при заходе на напр. admin.php появляется окошко,
но после ввода пароля - not found, оно и понятно почему,

но как сделать правильно чтобы после проверки пароля для этих файлов выполнялся локейшн тот который ~ \.php$ ?

Собственно суть вопроса - можно ли сделать auth_basic для отдельного файла на сайте при этом не создавая копию конфигурации fastcgi, описанную в location ~ \.php$ (инклуд тоже не вариант)

Почитал форум нгинкса, ничего не нашел, хоть делай авторизацию в пхп))
 

BMW M6

Новичок
Так ответ очень прост убрать location. И просто оставить
PHP:
auth_basic            "Restricted";
auth_basic_user_file  htpasswd;
Или же:
PHP:
location ^~/ {     
   auth_basic            "Restricted";
   auth_basic_user_file  htpasswd;
 }
P.S. Я конечно поднял старую тему, ну всё же может кому нибудь и поможет!
 
Сверху