我正在设置 nginx 来为 Mercurial 存储库提供服务。当完全不使用基本身份验证时,或者当我完全使用基本身份验证时,它都可以正常工作。
我想要做的只是在 POST 请求上使用基本身份验证,这样任何人都有拉取访问权限,但只有经过身份验证的用户才能推送。
我尝试了以下方法,
if ($request_method = POST) {
auth_basic "Restricted";
auth_basic_user_file /path/to/userfile
}
然而它抱怨“auth_basic 指令这里不允许”。
我该如何解决这个问题?
答案1
你应该使用limit_except
:
limit_except GET HEAD {
auth_basic 'Restricted';
auth_basic_user_file /path/to/userfile;
}
它从 nginx 0.8.48 开始起作用,在旧版本中存在一个fastcgi_pass
未在 limit_except 块内继承的错误。