ฉันจำเป็นต้องเค้นการเชื่อมต่อ/คำขอในเซิร์ฟเวอร์ NGINX สำหรับทั้งคำขอ http และ http2 อย่างไรก็ตาม การควบคุมปริมาณจะต้องไม่ใช้กับที่อยู่ IP เฉพาะของ CDN (ซึ่งมีอยู่แล้วในบล็อกทางภูมิศาสตร์)
ฉันมีการกำหนดค่าต่อไปนี้เพื่อเค้นคำขอ http/http2 เมื่อไม่มีข้อกำหนดเฉพาะของ CDN
แผนที่ $http2 $http1connlimitkey {
ค่าเริ่มต้น "";
"" $binary_remote_addr;
}
แผนที่ $http2 $http2connlimitkey {
เริ่มต้น $binary_remote_addr;
"""";
}
อย่างใดอย่างหนึ่งของ http1connlimitkey
และ http2connlimitkey
คีย์ถูกตั้งค่าเป็น binary_remote_addr
ขึ้นอยู่กับประเภทของการเชื่อมต่อ
ตอนนี้ โดยไม่คำนึงถึงประเภทการเชื่อมต่อ หากการเชื่อมต่อเริ่มต้นจาก CDN ฉันต้องตั้งค่าคีย์ด้านบนเป็นว่างเพื่อหลีกเลี่ยงการควบคุมปริมาณการเชื่อมต่อ
ฉันกำลังปฏิบัติตามแนวทางที่ให้ไว้ในโซลูชันนี้ จะ จำกัด อัตราใน nginx ได้อย่างไร แต่รวม / ไม่รวมที่อยู่ IP บางอย่าง เพื่อแมปที่มาของคำขอ
geo $รายการที่อนุญาตพิเศษ {
เริ่มต้น 0;
# CIDR ในรายการด้านล่างไม่จำกัด
1.2.3.0/24 1;
9.10.11.12/32 1;
}
แผนที่ $รายการที่อนุญาต $limit {
0 $binary_remote_addr;
1 "";
}
ฉันจะตั้งค่า http1connlimitkey
และ http2connlimitkey
ให้ว่างเปล่าหากคำขอมาจาก CDN
วิธีหนึ่งที่ฉันคิดว่าจะมีแผนที่ตามด้านล่าง
แผนที่ $รายการที่อนุญาตพิเศษ $cdn {
0 ""
1 "ซีดีเอ็น";
}
แผนที่ "$cdn$http2" $http1connlimitkey {
"^ซีดีเอ็น" ""
"" $binary_remote_addr;
ค่าเริ่มต้น "";
}
แผนที่ "$cdn$http2" $http2connlimitkey {
"^ซีดีเอ็น" ""
เริ่มต้น $binary_remote_addr;
"""";
}
วิธีอื่นที่ดีกว่าในการจัดการแบบเดียวกัน
ฉันต้องหลีกเลี่ยงทั้ง http และ http2 จำกัด ในกรณีที่คำขอมาจาก CDN
ขอบคุณ