NGINX仅适用于POST的基本身份validation

我正在设置nginx来提供Mercurial存储库。 它在不使用基本身份validation的时候,或者当我使用基本身份validation的时候都可以工作。

我想要做的就是对POST请求使用基本的身份validation,所以任何人都可以访问,但只有经过身份validation的用户才能进行访问。

我尝试了以下,

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

但它抱怨“auth_basic指令不允许在这里”。

我该如何解决这个问题?

    你应该使用limit_except

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

    它起作用nginx 0.8.48,在旧版本中有一个bug,其中fastcgi_pass没有被inheritance在limit_except块内。