指定返回时,位置块中的auth_basic不起作用?

Flo*_*Woo 7 nginx nginx-location

我认为这会起作用,但由于某种原因,它会跳过auth_basic并且总是返回200.如果我将200换成301重定向,也会发生同样的情况.

如果我注释掉return语句就行了.理想情况下,我只想要一个/auth端点,一旦通过身份验证,它将301重定向到另一个路径.

 location /auth {
     auth_basic_user_file /etc/nginx/.htpasswd;
     auth_basic "Secret";

     return 200 'hello';
  }
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

非常感谢

FLO

Dig*_*aen 9

return-directives在大多数其他指令之前执行.要解决您的问题,您需要将其拆分为两个位置:

location /auth {
  auth_basic_user_file /etc/nginx/.htpasswd;
  auth_basic "Secret";
  try_files DUMMY @return200;
}

location @return200 {
  return 200 'hello';
}
Run Code Online (Sandbox Code Playgroud)

try_files-directive之后评价auth_basic.第二个位置仅作为结果进行评估try_files.