Nginx auth basic 无法与重写配合使用

Nginx auth basic 无法与重写配合使用

我需要使用基本身份验证保护一个目录并仅重写该目录内的所有 URL。

我有以下配置:

    location /admin/ {
            auth_basic "Secure area";
            auth_basic_user_file .htpasswd;
            rewrite  ^(.*)$ /admin/index.php last; break;
    }

但是,基本身份验证不起作用。如果我评论rewrite规则,它就会开始工作。

如何修复?

答案1

由于请求工作流程,“重写”在基本身份验证之前进行。

尝试使用错误页面和命名位置的技巧:

 location /admin/ {
            auth_basic "Secure area";
            auth_basic_user_file .htpasswd;
            error_page 404 = @admin;
    }

location @admin {
            rewrite  ^(.*)$ /admin/index.php last;
}

相关内容