Score:0

การตรวจสอบคำขอย่อย nginx ไม่ทำงานตามที่คาดไว้

ธง ws

ฉันต้องการเพิ่มการควบคุมการเข้าถึงให้กับ vhost ทั้งหมดใน reverse proxy ฉันใช้การตรวจสอบคำขอย่อย nginx เพื่อทำสิ่งนี้ การโต้ตอบที่คาดไว้คือผู้ใช้จะได้รับข้อความแสดงข้อผิดพลาดพร้อมลิงก์ไปยังหน้าเข้าสู่ระบบหรือหน้าเข้าสู่ระบบแสดงผลที่ URL ที่ร้องขอ เมื่อเสร็จสิ้นขั้นตอนการเข้าสู่ระบบ ควรมีกลไกบางอย่างสำหรับผู้ใช้ในการนำทาง / โหลด URL ที่ร้องขอเดิมซ้ำ ไม่มีความสามารถในการเขียนสคริปต์บนพร็อกซีย้อนกลับ (เช่น ไม่มี PHP) ซึ่งจะจำกัดตัวเลือกสำหรับการจับภาพและเผยแพร่ URL ดั้งเดิมผ่านกระบวนการตรวจสอบความถูกต้อง

ความคาดหวังของฉัน: หากคำขอไม่ผ่านการรับรองความถูกต้อง (เช่น http://authprovider.example.com:8081/gateway/index.php ส่งคืน 401) ฉันต้องการส่งคืนเนื้อหาเฉพาะที่ URL ที่ร้องขอโดยไม่มีการเปลี่ยนเส้นทางและมีสถานะ 4xx

เซิร์ฟเวอร์ {
    ฟัง 80;
    server_name www.example.com;
    รูท /var/www/html;

    error_page 401 iprestricted.html;
    ## สิ่งนี้ให้ข้อเสนอแนะแก่ผู้ใช้เมื่อคำขอไม่ได้รับอนุญาต
    ## (รวมลิงค์สำหรับเข้าสู่ระบบ)
    # ตำแหน่ง /iprestricted.html {
    # try_files $uri $uri/ =404;
    # }

    # สิ่งนี้ใช้การตรวจสอบคำขอย่อย ....
    สถานที่ / จำกัด {
            ภายใน;
            proxy_pass http://authprovider.example.com:8081/gateway/index.php ;
            ปิด proxy_pass_request_body;
            proxy_set_header ความยาวเนื้อหา "";
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Original-URI $request_uri;
    }
    ที่ตั้ง / {
            auth_request /จำกัด;
            proxy_pass http://localwebserver/;
    }
}

อย่างไรก็ตาม:

ถ้า ตำแหน่ง /iprestricted.html{...} ถูกแสดงความคิดเห็น ฉันได้รับการเปลี่ยนเส้นทางวนซ้ำ ที่ http://www.example.com

หากไม่มีการแสดงความคิดเห็น คำขอใดๆ จะได้รับการตอบกลับ 302 พร้อม Location /iprestricted.html ซึ่งส่งคืนรหัสสถานะ 200

จะใช้การตรวจสอบคำขอย่อยโดยไม่มีการเปลี่ยนเส้นทางได้อย่างไร

มีวิธีอื่นในการจับภาพ URL ดั้งเดิมและเผยแพร่สิ่งนี้ผ่านไปยังขั้นตอนการพิสูจน์ตัวตนโดยใช้เพียง nginx config หรือไม่

ฉันได้ลองเพิ่ม add_header WWW-ตรวจสอบสิทธิ์ "พื้นฐาน realm=bipdevtest"; ในแต่ละตำแหน่งและทั้งสองตำแหน่งด้านบน แต่ไม่ได้ส่งกลับในการตอบสนอง HTTP

Score:0
ธง ws

เป็นความคิดที่ดีเสมอ อาร์.ที.เอฟ.เอ็ม

Nginx จะส่งต่อส่วนหัว WWW-Authenticate หากผู้ให้บริการ auth_request ส่งคืน (http://authprovider.example.com:8081/gateway/index.php ในข้างต้น).

อย่างไรก็ตาม ฉันจะเปิดคำถามไว้ เนื่องจากฉันสับสน/กังวลเกี่ยวกับหน้าแสดงข้อผิดพลาดที่กำหนดเองซึ่งส่งผลให้มีการเปลี่ยนเส้นทาง 302 ตามด้วยการตอบกลับ 200 ครั้ง

โพสต์คำตอบ

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