POSTのみのNGINX基本認証


8

Mercurialリポジトリを提供するようにnginxを設定しています。基本認証をまったく使用しない場合、または基本認証をすべて使用する場合に機能します。

私がやりたいのは、POSTリクエストで基本認証を使用することです。そのため、誰でもプルアクセスできますが、認証されたユーザーのみがプッシュできます。

私は以下を試しました、

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

しかし、「auth_basicディレクティブはここでは許可されていません」と文句を言います。

どうすればこれを解決できますか?

回答:


13

あなたは使うべきですlimit_except

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

nginx 0.8.48以降で機能します。古いバージョンではfastcgi_pass、limit_exceptブロック内で継承されないバグがありました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.