[nginx] auth_basic et location pour cgit (résolu)

Applications, problèmes de configuration réseau
Avatar de l’utilisateur
Nic0
Chu Ko Nu
Messages : 454
Inscription : dim. 11 janv. 2009, 03:16
Localisation : Calvados (14)

[nginx] auth_basic et location pour cgit (résolu)

Message par Nic0 »

Salut à tous,

Sur un serveur Arch, avec Nginx et Cgit. Je veux restreindre l'accès par authentification basique, excepté pour le répertoire /pub/. Tout fonctionne, sauf que je n'arrive pas à mettre l'exception sur le répertoire. Comme indiqué sur la documentation du module, je voudrais mettre le contexte server en auth_basic, et ainsi mettre un auth_basic off dans le contexte de location correspondant au répertoire /pub/.

En m'aidant de ce lien, j'en suis arrivé à ça :

Code : Tout sélectionner

server {
    listen       80;
    server_name  git.nicosphere.net;
    index cgit.cgi;
    gzip off;

    auth_basic "Restricted";
    auth_basic_user_file /srv/gitosis/.htpasswd;

    location / {
        root /usr/share/webapps/cgit/;
    }

    location ^~ /pub/  {
        auth_basic off;
    }

    if (!-f $request_filename) {
           rewrite ^/([^?/]+/[^?]*)?(?:\?(.*))?$ /cgit.cgi?url=$1&$2 last;
    }

    location ~ \.cgi$ {
        gzip off;
        include fastcgi_params;
        fastcgi_pass    127.0.0.1:9001;
        fastcgi_index   cgit.cgi;
        fastcgi_param   SCRIPT_FILENAME /usr/share/webapps/cgit/cgit.cgi;
        fastcgi_param   DOCUMENT_ROOT /usr/share/webapps/cgit/;
    }
}
Notez que pour mes essais, et afin de simplifier, j'ai essayé de faire l'inverse, de laisser tout accessible, sauf le répertoire /pub/, sans plus de succès, dans ce cas, tout fonctionne sans mot de passe demandé.
L'aspect pédagogique prime sur la solution, je suis preneur de tout lien explicatif.

Merci.

EDIT: j'ai également demandé sur stackoverflow au cas où.
~ Yet Another DevOps Blog ~
Avatar de l’utilisateur
Nic0
Chu Ko Nu
Messages : 454
Inscription : dim. 11 janv. 2009, 03:16
Localisation : Calvados (14)

Re: [nginx] auth_basic et location pour cgit

Message par Nic0 »

J'ai eu ma réponse, sur #nginx et stackoverflow.

Pour info, voici le code (voir http://stackoverflow.com/questions/1048 ... -with-cgit )

Code : Tout sélectionner

server {
    listen       80;
    server_name  git.nicosphere.net;
    index cgit.cgi;
    gzip off;

    root /usr/share/webapps/cgit;

    # $document_root is now set properly, and you don't need to override it
    include fastcgi_params;
    fastcgi_param   SCRIPT_FILENAME $document_root/cgit.cgi;

    location / {
        try_files $uri @cgit;
    }

    # Require auth for requests sent to cgit that originated in location /    
    location @cgit {
        auth_basic "Restricted";
        auth_basic_user_file /srv/gitosis/.htpasswd;

        gzip off;
        # rewrites in nginx don't match the query string
        rewrite ^/([^/]+/.*)?$ /cgit.cgi?url=$1 break;
        fastcgi_pass    127.0.0.1:9001;
    }

    location ^~ /pub/  {
        gzip off;
        rewrite ^/([^/]+/.*)?$ /cgit.cgi?url=$1 break;
        fastcgi_pass    127.0.0.1:9001;
    }
}
~ Yet Another DevOps Blog ~
Répondre