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


8

我正在设置nginx来服务Mercurial存储库。当完全不使用基本身份验证时,或者当我完全使用基本身份验证时,它可以工作。

我想做的是仅对POST请求使用基本身份验证,因此任何人都可以访问请求,但只有经过身份验证的用户才能进行推送。

我尝试了以下方法

if ($request_method = POST) {
  auth_basic "Restricted";
  auth_basic_user_file /path/to/userfile
}

但是,它抱怨“此处不允许使用auth_basic指令”。

我该如何解决?

Answers:


13

您应该使用limit_except

limit_except GET HEAD {
    auth_basic 'Restricted';
    auth_basic_user_file /path/to/userfile;
}

从nginx 0.8.48开始,它可以工作,在较早的版本中,存在一个bug,该错误fastcgi_pass未在limit_except块内继承。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.