4

我的网站的一部分受以下保护auth_basic

    location / {
            auth_basic "Authorization Required";
            auth_basic_user_file .htpasswd;
            index  app.php;
            try_files $uri @rewriteapp;
    }

对于未经授权的用户(点击“取消”的用户),我想显示一个自定义错误页面。这是我的做法:

    error_page 401 = @error401;

    location @error401 {
                    rewrite ^ /error/401.html redirect;
    }

    location /error {
            expires max;
            add_header Pragma public;
            add_header Cache-Control "public";
            index  app.php;
            try_files $uri @rewriteapp;
    }

我必须创建 @error401 别名,以便我可以指定“重定向”,因为如果我使用内部重定向,我的应用程序将处理原始请求(并允许访问实际请求的页面!)

所以这工作正常,页面显示。问题是现在 nginx 甚至不向用户询问那里的凭据。

有没有什么办法解决这一问题 ?或者有什么更好的方法来处理这个问题?

4

2 回答 2

4

这就是我能够完成你想要做的事情的方式:

## Path must be prefixed with a /, i.e. /401.html, NOT 401.html
error_page 401 /401.html;

location ~ (401.html)$ {
    alias /usr/share/nginx/html/$1;
}
于 2013-02-01T22:02:39.487 回答
1

你应该添加auth_basic off;

于 2015-11-15T06:59:41.390 回答