ฉันกำลังมองหาการตั้งค่าที่ฉันต้องการมีใบรับรองไคลเอนต์ SSL สำหรับ IP ต้นทางทั้งหมด ยกเว้น IP ต้นทางเดียว
ความคิดของฉันคือการตั้งค่า
ssl_verify_client เป็นทางเลือก;
และเพื่อเพิ่มคำสั่ง if อย่างละเอียดให้กับสถานที่
อย่างไรก็ตามฉันไม่รู้ว่าจะเขียนคำสั่ง if ดังกล่าวอย่างไร
# สิ่งนี้ต้องการใบรับรองไคลเอนต์ ssl สำหรับทุกสถานที่
ที่ตั้ง / {
ถ้า ($ssl_client_verify != "สำเร็จ") {
กลับ 403;
...
}
# ตอนนี้จะเขียนอะไรเพื่อต้องการใบรับรอง ssl ยกเว้นว่า IP ต้นทางเป็นเช่น 1.2.3.4
สถานที่ / สอง {
ถ้า (?????) {
กลับ 403;
...
}
แก้ไข: ข้อมูลเพิ่มเติม
สวิตช์ ssl_verify_client ด้วยค่า ไม่จำเป็น
บอกลูกค้าว่าสามารถทำได้ แต่ไม่ต้องส่งใบรับรองไคลเอ็นต์
ดังนั้นโดยการตรวจสอบตัวแปร $var_ssl_client_verify ฉันสามารถดูได้ว่ามีการแสดงใบรับรองไคลเอ็นต์และถูกต้องหรือไม่ (ความสำเร็จ
) หรือไม่.
กฎนี้จะใช้กับไคลเอนต์ทั้งหมดที่ไม่มี IP ต้นทางที่กำหนด สำหรับ IP ต้นทางเฉพาะ ฉันไม่ต้องการยืนยันใบรับรองไคลเอ็นต์
สิ่งที่ฉันต้องการคือสิ่งที่ชอบ
ถ้า ($ssl_client_verify != "สำเร็จ" และ source_ip != 1.2.3.4 ) {
กลับ 403;
}
แก้ไข 2: ฉันเปลี่ยนชื่อเรื่องจาก
ตั้งค่า nginx เพื่อต้องการใบรับรองไคลเอนต์สำหรับทั้งหมดยกเว้น IP ต้นทางที่กำหนด
ถึง
ตั้งค่า nginx เพื่อต้องการเงื่อนไขบางประการของตำแหน่งสำหรับทั้งหมดยกเว้น IP ต้นทางที่กำหนด
เนื่องจากสิ่งที่ฉันกำลังดิ้นรนจริงๆ ไม่เกี่ยวข้องกับใบรับรองไคลเอ็นต์ แต่เป็นการรวมคำสั่ง if และการกรองแบบมีเงื่อนไขบนที่อยู่ IP ต้นทาง