Я настраиваю 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.