Frage Grundlegende Auth Sitewide aktivieren und für Unterseiten deaktivieren?


Ich habe eine relativ direkte Konfiguration:

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;
    }
}

Das Ziel ist es, grundlegende Auth auf der gesamten Website zu verwenden, außer auf der /api/ Teilbaum. Während es in Bezug auf grundlegende Auth funktioniert, andere Direktiven wie proxy_pass sind nicht in Kraft /api/ auch.

Ist es möglich, Basic Auth einfach zu deaktivieren, während die anderen Direktiven beibehalten werden, ohne alles kopieren und einfügen zu müssen?


22
2017-11-13 20:07


Ursprung




Antworten:


Wie wäre es mit zwei Dateien?

includes / proxy.conf wäre:

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;

Und deine aktuelle Conf-Datei:

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;
    }
}

23
2017-11-13 21:13





Konfigurationsdatei

In Nginx 1.4.4 benötigen Sie Anführungszeichen off für die auth_basic Rahmen.

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;
}

Erstellen Sie Ihre htpasswd / passwd Datei

Installieren apache2-utilsEs gibt eine nette Helfer-App, die die htpasswd-Datei sehr schnell für dich erstellt. http://httpd.apache.org/docs/2.2/programs/htpasswd.html

htpasswd -c -m <filename> <username>

8
2018-01-12 08:21



Dies schließt einen bestimmten Standort aus und fordert zur Eingabe eines Passworts für den Rest der Website auf. jedochWenn ich auf "Abbrechen" klicke, wird anstelle der 401-Fehlerseite die tatsächliche Seite angezeigt, die ich angefordert habe, aber ohne statische Dateien. - aexl


Unter Config funktioniert für mich für die Freigabe eines Ordners von meiner Festplatte ohne Authentifizierung für Freigabeordner und Rest der Website erforderliche Authentifizierung

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\\;
        }
}

2
2018-02-09 07:03