web-dev-qa-db-ja.com

POST)の場合のみのNGINX基本認証

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

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

私は以下を試しました、

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

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

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

8
hokkaido

limit_except

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

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

13
Mitar