ฉันไม่คิดว่าคำตอบของ @Klamberext จะตอบคำถามจริงๆ นั่นคือเว็บเซิร์ฟเวอร์ nginx มีไฟล์ เซิร์ฟเวอร์เริ่มต้น แนวคิด. หน้าเอกสารอย่างเป็นทางการเกี่ยวกับเรื่องนี้สามารถพบได้ที่นี่: nginx ประมวลผลคำขออย่างไร. อย่างไรก็ตาม เซิร์ฟเวอร์ตัวใดตัวหนึ่งที่บล็อกการฟังบนอินเทอร์เฟซ/พอร์ตของเครือข่ายบางอย่างจะทำหน้าที่เป็นค่าเริ่มต้นเสมอ หากคุณไม่ระบุการบล็อกเซิร์ฟเวอร์นั้นอย่างชัดเจน จะเป็นการบล็อกเซิร์ฟเวอร์แรกสุดในการกำหนดค่าของคุณ นั่นหมายความว่าเซิร์ฟเวอร์ของคุณบล็อกด้วย server_name app.example.com www.app.example.com;
บรรทัดจะเป็นบล็อกเซิร์ฟเวอร์เริ่มต้นสำหรับคำขอใด ๆ ที่มาจากพอร์ต 443 TCP ซึ่งให้บริการคำขอใด ๆ ที่มี HTTP เจ้าภาพ
ส่วนหัวจะไม่ตรงกัน ตัวอย่าง.คอม
หรือ www.example.com
(หรือถ้าจะไม่มี เจ้าภาพ
ส่วนหัวเลย).
ตามที่ @Klamberext พูดไปแล้ว แนวทางปฏิบัติทั่วไปคือการกำหนดบล็อกเซิร์ฟเวอร์ stub เพื่อตรวจจับคำขอทั้งหมดที่ เจ้าภาพ
ส่วนหัว HTTP ไม่ตรงกับโดเมนใดๆ ที่คุณให้บริการ สามารถดูตัวอย่างได้ที่ นี้ ดังนั้นคำตอบ โดยปกติบล็อกเซิร์ฟเวอร์ดังกล่าวประกอบด้วย กลับ 444;
คำสั่งซึ่งเป็นรหัสส่งคืน nginx พิเศษเพื่อปิดการเชื่อมต่อทันทีอย่างไรก็ตาม ดูเหมือนว่าคุณต้องการสิ่งที่ตรงกันข้าม และคุณจะต้องใช้บล็อกเซิร์ฟเวอร์สองบล็อกเพื่อดำเนินการให้สำเร็จ ดังที่ได้กล่าวไปแล้ว บล็อกเซิร์ฟเวอร์เดียวที่ฟังบนพอร์ต TCP 8080 จะทำหน้าที่เป็นบล็อกเริ่มต้นไม่ว่าจะเป็นอะไรก็ตาม เจ้าภาพ
ส่วนหัวตั้งค่าเป็น:
เซิร์ฟเวอร์ {
ฟัง 8080;
server_name example.com www.example.com app.example.com www.app.example.com;
กลับ 444;
}
เซิร์ฟเวอร์ {
ฟัง 8080 default_server;
... การกำหนดค่าของคุณที่นี่
}
เป็นทางเลือก คุณสามารถตรวจสอบ เจ้าภาพ
ค่า header ภายในบล็อกเซิร์ฟเวอร์ของคุณ เช่น เพื่อบล็อก an ตัวอย่าง.คอม
โดเมนและโดเมนย่อยใดๆ ของโดเมน:
เซิร์ฟเวอร์ {
ฟัง 8080;
ถ้า ($http_host ~ \.?example\.com$) { ส่งคืน 444; }
... การกำหนดค่าของคุณที่นี่
}