Score:1

NGINX auth_basic ไม่รวมคำขอ GET สำหรับสคริปต์ php เฉพาะ

ธง cn

ฉันไม่สามารถเข้าใจวิธีการยกเว้นตำแหน่งเฉพาะจาก auth_basic

เซิร์ฟเวอร์ {
        server_name example.com;

        รูท /var/www/html;

        ดัชนี index.php;

        auth_basic "ไม่ ไม่ ไม่ ไม่";
        auth_basic_user_file .htpasswd;

        ที่ตั้ง / {
                try_files $uri $uri/ =404;
        }

        ตำแหน่ง ~ \.php$ {
                รวมตัวอย่าง/fastcgi-php.conf;
                fastcgi_pass ยูนิกซ์:/var/run/php/php7.4-fpm.sock;
        }

        # สคริปต์นี้ต้องการการเข้าถึงฟรีและใช้พารามิเตอร์สตริงข้อความค้นหา
        ตำแหน่ง /sub/script.php {
                ปิด auth_basic;
        }

        #วิธีนี้ใช้ได้ดี
        ตำแหน่ง /sub/a-javascript.js {
                ปิด auth_basic;
        }
...

ตำแหน่ง /sub/script.php ต้องการการเข้าถึงฟรี คงจะดีถ้าสามารถอนุญาตเฉพาะคำขอ GET เท่านั้น ปัญหาของฉันน่าจะเป็นพารามิเตอร์การค้นหาที่ตามมา

สคริปต์ได้รับการร้องขอเสมอด้วยพารามิเตอร์การค้นหาจำนวนมาก script.php?param=something&other_param=somethingelse&etc=etc

Paul avatar
cn flag
ฉันไม่ชัดเจนว่าทำไม `location ~ /sub/script\.php$ { auth_basic off; รวมตัวอย่าง/fastcgi-php.conf; fastcgi_pass ยูนิกซ์:/var/run/php/php7.4-fpm.sock; limit_except รับ { ปฏิเสธทั้งหมด; } }` แต่ฉันไม่เคยใช้มันมาก่อน
sv flag
พอลพูดถูก โปรดทราบว่าการใช้ limit_except เพื่ออนุญาต GET ยังอนุญาตคำขอ HEAD
cn flag
@Paul ยังคงได้รับ 401'd
Paul avatar
cn flag
มีอะไรเพิ่มเติมในบันทึก? การตั้งค่า `error_log debug;` ให้อะไรเพิ่มเติมหรือไม่
Paul avatar
cn flag
โอ้ ลองย้ายบล็อก `location ~ /sub/script\.php$...` ให้อยู่เหนือบล็อก `location ~ \.php$...` หากคุณยังไม่ได้ดำเนินการ
cn flag
@Paul ใช่แล้ว ดูเหมือนว่าจะย้ายไปไว้เหนือบล็อก php แล้ว ขอบคุณ!
Score:1
ธง cn

การกำหนดค่าปัจจุบันของคุณตรงกับคำขอสำหรับ /sub/script\.php$ ดังต่อไปนี้ ที่ตั้ง บล็อก:

        ตำแหน่ง ~ \.php$ {
            รวมตัวอย่าง/fastcgi-php.conf;
            fastcgi_pass ยูนิกซ์:/var/run/php/php7.4-fpm.sock;
        }

ใช้การกำหนดค่าต่อไปนี้ซึ่งวาง /sub/script\.php$ ที่ตั้งเหนือ \.php$ ที่ตั้งเพราะ จิงซ์ จะหยุดประเมินที่ regex ที่ตรงกันครั้งแรก ที่ตั้ง.

เซิร์ฟเวอร์ {
        server_name example.com;

        รูท /var/www/html;

        ดัชนี index.php;

        auth_basic "ไม่ ไม่ ไม่ ไม่";
        auth_basic_user_file .htpasswd;

        ที่ตั้ง / {
                try_files $uri $uri/ =404;
        }

        ตำแหน่ง ~ /sub/script\.php$ {
                ปิด auth_basic;
                รวมตัวอย่าง/fastcgi-php.conf;
                fastcgi_pass ยูนิกซ์:/var/run/php/php7.4-fpm.sock;
                limit_except รับ { ปฏิเสธทั้งหมด; } # อนุญาตให้ HEAD
                }

        ตำแหน่ง ~ \.php$ {
                รวมตัวอย่าง/fastcgi-php.conf;
                fastcgi_pass ยูนิกซ์:/var/run/php/php7.4-fpm.sock;
        }

        #วิธีนี้ใช้ได้ดี
        ตำแหน่ง /sub/a-javascript.js {
                ปิด auth_basic;
        }
...

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา