HTTP .htpasswd 递归保护 Nginx 上的子域名

HTTP .htpasswd 递归保护 Nginx 上的子域名

我想用密码保护我的开发者子域名(dev.example.com),并让主域名公开。

我想以递归方式执行此操作,以便子域上的任何文件或文件夹始终提示您登录。

在 Nginx 配置文件中,我已将以下内容添加到我的 dev.example.com 服务器块中(请注意,我有针对主域和子域的单独服务器块):

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

通过在 SF 上进行搜索,我的印象是^~标识符使得密码保护具有递归性,但事实并非如此。

尽管 dev.example.com 特别提示我登录,但 dev.example.com/folder/ 却没有。

我究竟做错了什么?

答案1

为了保护整个子域,语句应该出现在现存的 server堵塞:

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

答案2

这应该可以工作。完成编辑后,请确保重新启动 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;
    }

}

相关内容