ฉันจะบล็อกคำขอด้วยชุดส่วนหัวโฮสต์ที่ไม่ถูกต้องได้อย่างไร


12

ฉันใช้ nginx เพื่อให้บริการเว็บไซต์ของฉัน ฉันต้องการปิดกั้นคำขอทั้งหมดที่มีส่วนหัว HTTP "โฮสต์" ที่ไม่ตรงกับโดเมนของเว็บไซต์ของฉัน

เพื่อให้เป็นรูปธรรมมากขึ้น nginx.conf ของฉันมีบล็อกเซิร์ฟเวอร์ทั้งสองนี้:

server {
    # Redirect from the old domain to the new domain; also redirect
    # from www.newdomain.com to newdomain.com without the "www"
    server_name www.olddomain.com olddomain.com www.newdomain.com;
    listen 80;
    return 301 $scheme://newdomain.com$request_uri;
}

server {
    server_name newdomain.com localhost;
    listen 80;

    # Actual configuration goes here...
}

ฉันต้องการบล็อก (เช่น“ ส่งคืน” รหัสสถานะ 444) การรับส่งข้อมูลใด ๆ ที่โฮสต์ไม่ได้เป็น www.olddomain.com, olddomain.com, www.newdomain.com หรือ newdomain.com ฉันจะทำสิ่งนี้ได้อย่างไร

คำตอบ:


14

กำหนดเซิร์ฟเวอร์เริ่มต้น

ถ้าคุณไม่ได้กำหนดอย่างชัดเจนเซิร์ฟเวอร์เริ่มต้นNginx โดยปริยายจะใช้เซิร์ฟเวอร์แรกพบ ดังนั้นเพียงแค่สร้างบล็อกเซิร์ฟเวอร์เพื่อบล็อกโฮสต์ที่ไม่รู้จัก :

server {
  listen 80 default_server;
  return 444;
}

(ไม่จำเป็นต้องเพิ่ม server_name - เนื่องจากจะไม่ตรงกัน)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.