当指定 return 时,位置块内的 auth_basic 不起作用?
auth_basic within location block doesn't work when return is specified?
我认为这会起作用,但出于某种原因它会跳过 auth_basic 并且总是 returns 200。如果我将 200 换成 301 重定向,也会发生同样的情况。
如果我注释掉 return 语句,它就可以正常工作。理想情况下,我只想要一个 /auth
端点,一旦通过身份验证,它将 301 重定向到另一条路径。
location /auth {
auth_basic_user_file /etc/nginx/.htpasswd;
auth_basic "Secret";
return 200 'hello';
}
我错过了什么吗?
非常感谢
fLo
return
-指令在大多数其他指令之前执行。要解决您的问题,您需要将其分成两个位置:
location /auth {
auth_basic_user_file /etc/nginx/.htpasswd;
auth_basic "Secret";
try_files DUMMY @return200;
}
location @return200 {
return 200 'hello';
}
try_files
指令在 auth_basic
之后求值。第二个位置仅作为 try_files
.
的结果进行评估
我认为这会起作用,但出于某种原因它会跳过 auth_basic 并且总是 returns 200。如果我将 200 换成 301 重定向,也会发生同样的情况。
如果我注释掉 return 语句,它就可以正常工作。理想情况下,我只想要一个 /auth
端点,一旦通过身份验证,它将 301 重定向到另一条路径。
location /auth {
auth_basic_user_file /etc/nginx/.htpasswd;
auth_basic "Secret";
return 200 'hello';
}
我错过了什么吗?
非常感谢
fLo
return
-指令在大多数其他指令之前执行。要解决您的问题,您需要将其分成两个位置:
location /auth {
auth_basic_user_file /etc/nginx/.htpasswd;
auth_basic "Secret";
try_files DUMMY @return200;
}
location @return200 {
return 200 'hello';
}
try_files
指令在 auth_basic
之后求值。第二个位置仅作为 try_files
.