Kích hoạt tính năng tự động cơ bản và vô hiệu hóa nó cho các trang con?


26

Tôi có một cấu hình tương đối thẳng về phía trước:

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

Mục tiêu là sử dụng auth cơ bản trên toàn bộ trang web, ngoại trừ trên /api/cây con. Mặc dù nó hoạt động liên quan đến auth cơ bản, các chỉ thị khác proxy_passcũng không có hiệu lực /api/.

Có thể chỉ vô hiệu hóa auth cơ bản trong khi vẫn giữ các chỉ thị khác mà không cần sao chép và dán mọi thứ?

Câu trả lời:


26

Làm thế nào về hai tập tin?

bao gồm / proxy.conf sẽ là:

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;

Và tập tin conf hiện tại của bạn:

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

Tập tin cấu hình

Trong Nginx 1.4.4, bạn cần báo giá xung quanh offcho auth_basiccài đặt.

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

Tạo tập tin htpasswd / passwd của bạn

Cài đặt apache2-utils, có một ứng dụng trợ giúp đẹp tạo tệp htpasswd cho bạn rất nhanh. http://httpd.apache.org/docs/2.2/programs/htpasswd.html

htpasswd -c -m <filename> <username>

Điều này không loại trừ một vị trí cụ thể và nhắc nhập mật khẩu cho phần còn lại của trang web. Tuy nhiên , nếu tôi nhấp vào hủy, thay vì trang lỗi 401, nó sẽ hiển thị cho tôi trang thực tế tôi yêu cầu, nhưng không có bất kỳ tệp tĩnh nào.
aexl

4

Dưới đây cấu hình hoạt động cho tôi để chia sẻ một thư mục từ đĩa của tôi mà không có bất kỳ xác thực nào cho thư mục chia sẻ và phần còn lại của trang web yêu cầu xác thực

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\\;
        }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.