ksenobayt
@ksenobayt

Basic_auth в nginx?

Есть связка из php-fpm и nginx. В конфиге есть примерно такой момент:


location ~ .php$ {

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /var/www/site.ru$fastcgi_script_name;

include fastcgi_params;

gzip_static on;

}


location /somewhere/ {

auth_basic «Please log in»;

auth_basic_user_file /var/somewhere/.htpasswd;

}


Проблема, собственно, вот в чем: постучав в site.ru/somewhere, и не указав креденциалы, мы словим 401 и все будет хорошо. А вот если постучать в site.ru/somewhere/index.php, скрипт благополучно исполнится и выдаст результат браузеру.


Понимаю, вопрос идиотский, и все же — каким образом расширить действие авторизации на всю начинку?
  • Вопрос задан
  • 2887 просмотров
Решения вопроса 1
ksenobayt
@ksenobayt Автор вопроса
В общем, единственным рабочим на данный момент решением оказалось такое извращение:

location ~ /somewhere/.* {
auth_basic «Please log in»;
auth_basic_user_file /var/somewhere/.htpasswd;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/site.ru/somewhere$fastcgi_script_name;
include fastcgi_params;
gzip_static on;
}

При подобной сборке локейшена и скрипт исполняется, и авторизация работает. Однако мне очень и очень не нравится монструозность подобной конструкции. Буду благодарен, если кто-то поможет найти более элегантное решение.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@max_rip
Доки читать не пробовали?
В них явно написано, что месторасположение локейшинов значения не имеют, приоритет идет у регулярных выражений. Посмотрите доклад Игоря по этому поводу, он там хорошо объясняет. Вот только как видео называется не помню, но он и не так много докладов делал по поводу конфига своего продукта ).
Ответ написан
Комментировать
ntkt
@ntkt
Потомственный рыцарь клавиатуры и паяльника
Не смею дать точный ответ, но:

1) поменять местами блоки location?
2) google: nginx location override
2.1) serverfault.com/a/340601
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы