วิธี จำกัด ความถี่ ในการเก็บข้อมูลของ บั๊ ไดั้

ใช้งานโมดูล ngx_http_limit_req_module ของ nginx

เพื่อจำกัดความถี่ในการดึงข้อมูลของเว็บไซต์ของ Baidu สามารถใช้โมดูล ngx_http_limit_req_module ของ nginx โมดูลนี้ช่วยควบคุมความถี่ของการเข้าถึงของ Baidu จึงลดภาระของเซิร์ฟเวอร์ได้

การกำหนดค่าใน nginx

ต้องกำหนดค่าในไฟล์การกำหนดค่าของ nginx เพื่อจำกัดความถี่ในการดึงข้อมูลของ Baidu ในส่วนการกำหนดค่าทั่วไป เพิ่มเนื้อหาต่อไปนี้:

limit_req_zone $anti_spider zone=anti_spider:60m rate=200r/m;

เพิ่มการกำหนดค่าต่อไปนี้ใน server ที่ต้องการ:

limit_req zone=anti_spider burst=5 nodelay;if ($http_user_agent ~* "baiduspider") {set $anti_spider $http_user_agent;}

คำอธิบายพารามิเตอร์

ในการกำหนดค่าดังกล่าวจะมีพารามิเตอร์บางอย่างที่ต้องอธิบาย:

rate=200r/m:หมายถึงสามารถประมวลผลคำขอได้ 200 คำขอต่อนาที

burst=5:หมายถึงการสูงสุดของการดำเนินการพร้อมกันเป็น 5 คำขอเท่านั้น กล่าวคือสามารถดำเนินการพร้อมกันได้เพียง 5 คำขอเท่านั้น

nodelay:หมายถึงเมื่อมีการดำเนินการพร้อมกันสูงสุดแล้ว จะส่งค่าสถานะ 503 กลับ

ส่วนตรวจสอบ IF:ใช้สำหรับตรวจสอบว่าคำขอมาจาก Baidu Spider หรือไม่ หากใช่ จะกำหนดค่าตัวแปร $anti_spider เพื่อจำกัดการดำเนินการของมัน

โดยการตั้งค่าข้างต้นจะช่วยจำกัดความถี่ในการดึงข้อมูลโดยบอทของบายดู เพื่อป้องกันปฏิกิริยากับเซิร์ฟเวอร์โดยเช่นเดียวกัน