Page 401 personnalisée ne demandant pas d’informations d’identification sur nginx

J’ai une partie de mon site protégée par auth_basic :

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

Pour les utilisateurs non autorisés (ceux qui cliquent sur «Annuler»), je souhaite afficher une page d’erreur personnalisée. Voici comment je l’ai fait:

  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; } 

J’ai dû créer l’alias @ error401 pour pouvoir spécifier “Redirect”, car si j’utilisais la redirection interne, mon application traiterait la requête d’origine (et donnerait access à la page demandée!)

Cela fonctionne donc bien, la page s’affiche. Le problème est que maintenant, nginx ne demande même pas aux utilisateurs les informations d’identification.

Est-ce qu’il y a un moyen de réparer ceci ? Ou une meilleure façon de gérer ce problème?

Voici comment j’ai pu accomplir ce que vous essayez de faire:

 ## Path must be prefixed with a /, ie /401.html, NOT 401.html error_page 401 /401.html; location ~ (401.html)$ { alias /usr/share/nginx/html/$1; } 

Vous devriez append auth_basic off;