Autenticación básica NGINX solo para POST

8

Estoy configurando nginx para servir repositorios Mercurial. Funciona cuando no utilizo la autenticación básica, o cuando uso la autenticación básica por todas partes.

Lo que quiero hacer es usar la autenticación básica en las solicitudes POST, para que cualquiera tenga acceso de extracción, pero solo los usuarios autenticados pueden presionar.

Intenté lo siguiente,

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

Sin embargo, se queja de que "la directiva auth_basic no está permitida aquí".

¿Como puedo resolver esto?

Adrian Heine
fuente

Respuestas:

13

Debes usar limit_except:

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

Funciona desde nginx 0.8.48, en versiones anteriores había un error que fastcgi_passno se heredaba dentro del bloque limit_except.

Mitar
fuente