NGINX 基本身份验证仅适用于 POST

NGINX 基本身份验证仅适用于 POST

我正在设置 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 块内继承的错误。

相关内容