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

HTTP .htpasswd рекурсивно защищает поддомен на Nginx

Я хочу защитить паролем свой поддомен разработчика (dev.example.com) и оставить основной домен общедоступным.

Я хочу сделать это рекурсивно, чтобы любой файл или папка в поддомене всегда предлагали вам войти в систему.

В конфигурационном файле Nginx я добавил следующее в свой серверный блок dev.example.com (обратите внимание, что у меня есть отдельные серверные блоки для основного и субдомена):

location ^~ / {
    auth_basic "Administrator Login";
    auth_basic_user_file /home/path/to/.htpasswd;
}

Изучая поиски по научной фантастике, у меня сложилось впечатление, что ^~ идентификатор делает защиту паролем рекурсивной, но это не так.

Если dev.example.com специально предлагает мне войти в систему, то dev.example.com/folder/ - нет.

Что я делаю не так?

Чтобы защитить весь субдомен, операторы должны отображаться в существующий server блок:

server {
    server_name dev.example.com;
    auth_basic "Administrator Login";
    auth_basic_user_file /home/path/to/.htpasswd;
    ...
}

Это должно работать. И не забудьте перезапустить nginx после завершения редактирования.

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html/subdomain;
    index index.php index.html index.html
    server_name dev.example.com;;

    location ^~ / {
        auth_basic "Restricted";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }

}