web-dev-qa-db-fra.com

Activer l'authentification de base sur tout le site et la désactiver pour les sous-pages?

J'ai une configuration relativement simple:

upstream appserver-1 {
    server unix:/var/www/example.com/app/tmp/gunicorn.sock fail_timeout=0;
}
server {
    listen  80;
    server_name  example.com;

    location / {
        proxy_pass http://appserver-1;
        proxy_redirect              off;
        proxy_set_header            Host $Host;
        proxy_set_header            X-Real-IP $remote_addr;
        proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;

        auth_basic                  "Restricted";
        auth_basic_user_file        /path/to/htpasswd;

    }

    location /api/ {
        auth_basic          off;
    }
}

L'objectif est d'utiliser l'authentification de base sur l'ensemble du site Web, sauf sur le /api/ sous-arbre. Bien que cela fonctionne en ce qui concerne l'authentification de base, d'autres directives comme proxy_pass ne sont pas en vigueur sur /api/ ainsi que.

Est-il possible de désactiver simplement l'authentification de base tout en conservant les autres directives sans tout copier-coller?

31
Benjamin Wohlwend

Que diriez-vous de deux fichiers?

le fichier/proxy.conf serait:

proxy_pass http://appserver-1;
proxy_redirect              off;
proxy_set_header            Host $Host;
proxy_set_header            X-Real-IP $remote_addr;
proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;

Et votre fichier de conf actuel:

upstream appserver-1 {
    server unix:/var/www/example.com/app/tmp/gunicorn.sock fail_timeout=0;
}
server {
    listen  80;
    server_name  example.com;

    location / {
        auth_basic                  "Restricted";
        auth_basic_user_file        /path/to/htpasswd;
        include includes/proxy.conf;
    }

    location /api/ {
        auth_basic          off;
        include includes/proxy.conf;
    }
}
33
cjc

Fichier de configuration

Dans Nginx 1.4.4, vous avez besoin de guillemets autour de off pour le auth_basic réglage.

location / {
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/passwd;
        include /etc/nginx/uwsgi_params;
        uwsgi_pass unix:/tmp/app.sock;
}

location /api {
    auth_basic "off";
        include /etc/nginx/uwsgi_params;
        uwsgi_pass unix:/tmp/app.sock;
}

Création de votre fichier htpasswd/passwd

Installer Apache2-utils, il existe une application d'assistance Nice qui crée le fichier htpasswd pour vous très rapidement. http://httpd.Apache.org/docs/2.2/programs/htpasswd.html

htpasswd -c -m <filename> <username>
11
Nick Woodhams

La configuration ci-dessous fonctionne pour moi pour partager un dossier à partir de mon disque sans aucune authentification pour le dossier de partage et le reste du site authentification requise

server {
        listen       80;
        server_name  localhost;
        root C:\\Users\\Work\\XYZ\\;
        autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on;
        auth_basic "Administrator Login";
        auth_basic_user_file C:\\Users\\Work\\.htpasswd;

        location /share {
            auth_basic "off";
            allow all; # Allow all to see content 
            alias C:\\Users\\sg32884\\Work\\share\\;
        }
}
4
sharad-garg

Emplacement Nginx

Cela peut être réalisé avec un sous-emplacement:

upstream appserver-1 {
    server unix:/var/www/example.com/app/tmp/gunicorn.sock fail_timeout=0;
}
server {
    listen  80;
    server_name  example.com;

    location / {
        location /api/ {
            auth_basic          off;
            include includes/proxy.conf;
        }
        auth_basic                  "Restricted";
        auth_basic_user_file        /path/to/htpasswd;
        include includes/proxy.conf;
    }
}

Notez que proxy.conf contient le proxy conf

0
intika