Назад | Перейти на главную страницу

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

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

Я хочу просто использовать базовую аутентификацию для запросов POST, чтобы любой имел доступ по запросу, но только аутентифицированные пользователи могли нажимать.

Я пробовал следующее,

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, в более старых версиях была ошибка, когда fastcgi_pass не был унаследован внутри блока limit_except.