我正在设置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块内。