Базовая аутентификация NGINX только для POST

8

Я настраиваю nginx для обслуживания репозиториев Mercurial. Он работает, когда вообще не используется базовая аутентификация или когда я использую базовую аутентификацию.

То, что я хочу сделать, - это просто использовать базовую аутентификацию для запросов 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.

Mitar
источник