我认为这会起作用但是由于某种原因它会跳过auth_basic并且总是返回200.如果我将200换成301重定向,也会发生同样的情况。
如果我注释掉return语句就行了。理想情况下,我只想要一个/auth
端点,一旦通过身份验证,它将301重定向到另一个路径。
location /auth {
auth_basic_user_file /etc/nginx/.htpasswd;
auth_basic "Secret";
return 200 'hello';
}
我错过了什么吗?
非常感谢FLO
答案 0 :(得分:6)
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
的结果进行评估。