Назад | Перейти на главную страницу

Работает ли 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: не найдено».

В моем 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.

Это проблема с конфигом или что-то еще?

Возможно, это проблема пути для auth_basic_user_file, где ваш абсолютный путь сбивает с толку nginx:

http://wiki.nginx.org/HttpAuthBasicModule#auth_basic_user_file

Начиная с версии 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». Если есть ошибка конфигурации, то есть файл аутентификации находится не там, где он ожидал, он должен сообщить вам об этом в этот момент.