เปิดใช้งานการตรวจสอบสิทธิ์เว็บไซต์พื้นฐานและปิดใช้งานสำหรับหน้าย่อยหรือไม่


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

ไฟล์สองไฟล์ล่ะ

รวมถึง / 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 ของคุณ

ติดตั้ง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.