Работает ли nginx auth_basic по HTTPS?
Я пытался настроить защищенный паролем каталог на сайте SSL следующим образом:
/ И т.д. / Nginx/ сайты-отсутствуют / по умолчанию
server {
listen 443:
ssl on;
ssl_certificate /usr/certs/server.crt;
ssl_certificate_key /usr/certs/server.key;
server_name server1.example.com;
root /var/www/example.com/htdocs/;
index index.html;
location /secure/ {
auth_basic "Restricted";
auth_basic_user_file /var/www/example.com/.htpasswd;
}
}
Проблема в том, когда я пытаюсь получить доступ к URL https://server1.example.com/secure/
, Я получаю страницу ошибки "404: Not Found".
Мой error.log показывает следующую ошибку:
011/11/26 03:09:06 [error] 10913#0: *1 no user/password was provided for basic authentication,
client: 192.168.0.24, server: server1.example.com, request: "GET /secure/ HTTP/1.1",
host: "server1.example.com"
Однако я смог без проблем установить защищенные паролем каталоги для обычного виртуального хоста HTTP.
Это проблема с конфигом или что-то еще?
1 ответ
Возможно, это проблема пути для auth_basic_user_file, где ваш абсолютный путь сбивает с толку nginx:
http://wiki.nginx.org/HttpAuthBasicModule
Начиная с версии 0.6.7, путь к имени файла относится к каталогу файла конфигурации nginx nginx.conf, но не к каталогу префикса nginx.
Я не уверен, как у вас это работает в других случаях. Цитата из документации предполагает, что у вас должно быть что-то вроде:
auth_basic_user_file htpasswd/www.example.com
где у вас будет файл пароля "/etc/nginx/htpasswd/www.example.com", если у вас есть "/etc/nginx/nginx.conf" в качестве файла конфигурации вашего сервера.
Вы можете проверить конфигурацию nginx, запустив "sudo nginx -t". Если есть ошибка конфигурации, т. Е. Файл аутентификации находится не там, где он ожидает, он должен сообщить вам об этом.