사이트 전체에서 기본 인증을 사용하도록 설정하고 하위 페이지에 대해 인증을 사용하지 않습니까?


26

비교적 간단한 구성이 있습니다.

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

/api/하위 트리를 제외하고 전체 웹 사이트에서 기본 인증을 사용하는 것이 목표입니다 . 기본 인증과 관련하여 작동하지만 다른 지시문도 proxy_pass적용되지 않습니다 /api/.

모든 복사 및 붙여 넣기없이 다른 지시문을 유지하면서 기본 인증을 비활성화 할 수 있습니까?

답변:


26

두 파일은 어때요?

includes / proxy.conf는 다음과 같습니다.

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;

그리고 현재 conf 파일 :

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

9

구성 파일

Nginx에 1.4.4에서는 따옴표가 필요 off에 대한 auth_basic설정.

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

htpasswd / passwd 파일 만들기

Install apache2-utils에는 매우 빠른 htpasswd 파일을 생성하는 멋진 도우미 앱이 있습니다. http://httpd.apache.org/docs/2.2/programs/htpasswd.html

htpasswd -c -m <filename> <username>

여기에는 특정 위치가 제외되고 나머지 사이트의 비밀번호를 묻는 메시지가 표시됩니다. 그러나 401 오류 페이지 대신 취소를 클릭하면 요청한 실제 페이지가 표시되지만 정적 파일은 표시되지 않습니다.
aexl

4

아래 구성은 공유 폴더 및 나머지 사이트에 대한 인증없이 디스크에서 폴더를 공유하는 데 필요합니다.

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\\;
        }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.