Autenticazione base NGINX solo per POST


8

Sto configurando nginx per servire i repository Mercurial. Funziona quando non uso affatto l'autenticazione di base o quando uso l'autenticazione di base ovunque.

Quello che voglio fare è usare solo l'autenticazione di base sulle richieste POST, quindi chiunque abbia accesso pull, ma solo gli utenti autenticati possono spingere.

Ho provato quanto segue,

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

Tuttavia si lamenta che "la direttiva auth_basic non è consentita qui".

Come posso risolvere questo?

Risposte:


13

Dovresti usare limit_except:

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

Funziona da nginx 0.8.48, nelle versioni precedenti c'era un bug che fastcgi_passnon era ereditato all'interno del blocco limit_except.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.