ฉันมี Nginx พร้อม "บริการ" (เว็บไซต์) ที่กำหนดไว้มากมาย ฉันต้องการปฏิเสธการเข้าถึงทั้งหมดสำหรับที่อยู่ IP จำนวนมาก (ส่วนใหญ่เป็นสากล) แต่ในขณะเดียวกันฉันต้องการ "อนุญาต" การเข้าถึงแบบไม่จำกัดสำหรับบางเว็บไซต์ที่สาธารณะสามารถเข้าถึงได้ เป็นไปได้ไหมที่จะทำเช่นนั้นด้วย Nginx ฟรีสำหรับ Windows
นี่คือโครงสร้างของไฟล์ปรับแต่งของฉัน:
http {
# ข้อความทั่วไปที่นี่
เซิร์ฟเวอร์ {
server_name publicsite.web;
# การตั้งค่าบางอย่าง
อนุญาตทั้งหมด
}
ปฏิเสธ 1.0.0.0/8;
ปฏิเสธ 2.0.0.0/8;
# ทุกอย่างด้านล่างควรถูกปฏิเสธจาก IP ที่ระบุไว้
เซิร์ฟเวอร์ {
server_name privatesite1.domain.web;
# การตั้งค่าบางอย่าง
}
เซิร์ฟเวอร์ {
server_name privatesite99.web;
# การตั้งค่าบางอย่าง
}
}
ฉันลองกำหนดค่าแบบนั้น แต่ "publicsite.web" ถูกปฏิเสธเนื่องจาก IP อยู่ด้านล่างเซิร์ฟเวอร์{} บล็อก ฉันเดาว่าเป็นเพราะพวกเขาอยู่ในระดับ http แม้ว่าจะอยู่ในรายการด้านล่างก็ตาม
ฉันเข้าใจว่าตัวเลือกที่ง่ายที่สุดคือการแสดงรายการ IP ที่ "ปฏิเสธ" ทั้งหมดในไฟล์แยกต่างหาก (ซึ่งมีอยู่แล้ว) และรวมไว้ในทุกบล็อกของเซิร์ฟเวอร์{} ซึ่งควรให้เกียรติการปฏิเสธ เนื่องจากอาจมีการบล็อกเซิร์ฟเวอร์เหล่านั้น{}มากถึงร้อยรายการ และการบล็อกซับเน็ต IP ที่ถูกปฏิเสธมากกว่าร้อยรายการ ฉันเกรงว่าการกำหนดค่าอาจซับซ้อนและเทอะทะ ซึ่งจะส่งผลต่อประสิทธิภาพของเซิร์ฟเวอร์
มีตัวเลือกที่ดีกว่าการรวมรายการเดียวกันของ IP ที่ถูกปฏิเสธในทุกเซิร์ฟเวอร์{} บล็อกหรือไม่