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;