这里的技巧是结合auth_basic和auth_request,这是一个例子:
location = /api {
satisfy any;
auth_basic "Restricted Access";
auth_basic_user_file "/usr/local/nginx/htpasswd";
auth_request /auth;
try_files $uri $uri/ /api.html;
}
location = /auth {
proxy_pass http://localhost:8080;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
}
您会注意到auth_basic_user_file存在并且您可能不想要它但是您可以留下一个空白文件,满足any将接受任何成功,auth_basic将失败但是还将在转发到的HTTP标头中设置用户和密码你的后端脚本,你可以相应地处理它们.