Autenticação básica do NGINX apenas para POST


8

Estou configurando o nginx para servir os repositórios do Mercurial. Funciona quando não está usando a autenticação básica, ou quando eu uso a autenticação básica.

O que eu quero fazer é usar apenas a autenticação básica em solicitações POST, para que qualquer pessoa tenha acesso por pull, mas apenas usuários autenticados podem enviar por push.

Eu tentei o seguinte,

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

No entanto, reclama sobre "a diretiva auth_basic não é permitida aqui".

Como posso resolver isso?

Respostas:


13

Você deve usar limit_except:

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

Funciona desde o nginx 0.8.48, nas versões mais antigas havia um bug que fastcgi_passnão era herdado dentro do bloco limit_except.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.