PlusMagi's Blog By Pitt Phunsanit Nginx,WordPress WordPress: ปิด Pingbacks และ Trackbacks บน Nginx

WordPress: ปิด Pingbacks และ Trackbacks บน Nginx

การปิด xmlrpc.php บน Nginx ทำได้โดยการเพิ่มบล็อกคำสั่งเข้าไปในไฟล์คอนฟิกของเว็บไซต์ (Server Block) เพื่อดักจับทุก Request ที่เรียกไฟล์นี้และตัดการเชื่อมต่อทันที


วิธีตั้งค่า

เปิดไฟล์คอนฟิกของไซต์ (เช่น /etc/nginx/sites-available/your-domain.conf หรือ /etc/nginx/conf.d/default.conf) แล้วเลือกใช้วิธีใดวิธีหนึ่งด้านล่างนี้ โดยวางไว้ภายในบล็อก server { ... }


แบบที่ 1: ตอบกลับด้วย 403 Forbidden (มาตรฐานที่นิยมใช้)

วิธีนี้จะปฏิเสธคำขอทันทีและส่งโค้ด HTTP 403 กลับไป พร้อมปิดการบันทึก Access/Error Log เพื่อไม่ให้ไฟล์ Log บวมจากการโดนบอทยิงถล่ม

location = /xmlrpc.php {
    deny all;
    access_log off;
    log_not_found off;
}

แบบที่ 2: ตัดการเชื่อมต่อทันที (Drop Connection – รหัส 444)

Nginx มีรหัสพิเศษคือ 444 ซึ่งจะสั่งตัดการเชื่อมต่อทันทีโดยไม่ส่ง Header หรือข้อมูลใด ๆ ตอบกลับ ช่วยประหยัดแบนด์วิดท์และทรัพยากรเครื่องได้สูงสุดเมื่อถูกบอทสแกน

location = /xmlrpc.php {
    access_log off;
    log_not_found off;
    return 444;
}

กรณีพิเศษ: ต้องการอนุญาตเฉพาะ IP ของเราหรือบริการบางตัว (Whitelist)

หากคุณใช้บริการอย่าง Jetpack หรือแอปมือถือที่จำเป็นต้องคุยผ่าน XML-RPC สามารถกำหนดสิทธิ์ให้อนุญาตเฉพาะ IP นั้นๆ ได้

location = /xmlrpc.php {
    allow 203.0.113.15;       # ไอพีแอดมินหรือเซิร์ฟเวอร์ที่อนุญาต
    # allow 192.0.64.0/18;    # ซับเน็ต Jetpack / Automattic (ตัวอย่าง)
    deny all;
    access_log off;
    log_not_found off;
}

ขั้นตอนการทดสอบและโหลดคอนฟิกใหม่

  1. ตรวจสอบความถูกต้องของ Syntax:Bashsudo nginx -t ต้องขึ้น syntax is ok และ test is successful
  2. Reload การตั้งค่า Nginx:Bashsudo systemctl reload nginx
  3. ทดสอบผลลัพธ์ด้วย cURL:Bashcurl -I https://yourdomain.com/xmlrpc.php ระบบควรตอบกลับด้วย HTTP/1.1 403 Forbidden (หรือ connection reset หากใช้ 444)

อ่านเพิ่มเติม