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 に答える