หากคุณreturn 301 https://$host$request_uri;
เป็นการตอบสนองเริ่มต้นที่พอร์ต 80 เซิร์ฟเวอร์ของคุณอาจช้าหรือเร็วกว่านั้นในรายชื่อผู้รับมอบฉันทะที่เปิดอยู่ [1] และเริ่มถูกทารุณกรรมเพื่อส่งทราฟฟิกที่อื่นบนอินเทอร์เน็ต หากบันทึกของคุณเต็มไปด้วยข้อความเช่นนี้คุณจะรู้ว่ามันเกิดขึ้นกับคุณ:
42.232.104.114 - - [25/Mar/2018:04:50:49 +0000] "GET http://www.ioffer.com/i/new-fashion-fine-gold-bracelet-versaec-bracelet-641175733 HTTP/1.1" 301 185 "http://www.ioffer.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.1.8.0; RogueCleaner; Alexa Toolbar)"
ปัญหาคือว่า$host
จะสะท้อนกลับสิ่งที่เบราว์เซอร์ส่งในHost
ส่วนหัวหรือแม้กระทั่งชื่อโฮสต์จากบรรทัดเปิดของ HTTP เช่นนี้:
GET http://www.ioffer.com/i/new-fashion-fine-gold-bracelet-versaec-bracelet-641175733 HTTP/1.1
เพราะปัญหาที่บางคำตอบอื่น ๆ ที่นี่ขอแนะนำให้ใช้แทน$server_name
ประเมินสิ่งที่คุณใส่ในการประกาศเสมอ แต่ถ้าคุณมีโดเมนย่อยหลายโดเมนที่นั่นหรือใช้ไวด์การ์ดนั้นจะไม่สามารถใช้งานได้เพราะใช้เฉพาะรายการแรกหลังจากการประกาศเท่านั้นและที่สำคัญกว่านั้นจะสะท้อนกลับเป็นไวด์การ์ด (ไม่ขยาย)$host
$server_name
server_name
$server_name
server_name
ดังนั้นวิธีการรองรับหลายโดเมนในขณะที่รักษาความปลอดภัย? ในระบบของฉันฉันได้จัดการกับภาวะที่กลืนไม่เข้าคายไม่ออกนี้โดยรายการแรกdefault_server
บล็อกที่ไม่ได้ใช้$host
แล้วรายการบล็อกตัวแทนที่ไม่:
server {
listen 80 default_server;
server_name example.com;
return 301 https://example.com$request_uri;
}
server {
listen 80;
server_name *.example.com;
return 301 https://$host$request_uri;
}
(คุณสามารถแสดงมากกว่าหนึ่งโดเมนในบล็อกที่สอง)
ด้วยชุดค่าผสมนั้นโดเมนที่ไม่ตรงกันจะได้รับการเปลี่ยนเส้นทางที่ไหนสักแห่ง hardcoded (เสมอexample.com
) และโดเมนที่ตรงกับคุณจะไปถูกที่แล้ว เซิร์ฟเวอร์ของคุณจะไม่เป็นประโยชน์ในฐานะที่เป็นพร็อกซีเปิดดังนั้นคุณจะไม่ได้รับปัญหา
หากคุณรู้สึกไม่ดีฉันคิดว่าคุณสามารถทำให้default_server
บล็อกนั้นไม่ตรงกับโดเมนที่ถูกต้องตามกฎหมายของคุณและให้บริการสิ่งที่น่ารังเกียจ . . .
[1] เทคนิค "พร็อกซี" เป็นคำที่ผิดเพราะเซิร์ฟเวอร์ของคุณไม่ออกไปข้างนอกและตอบสนองคำขอของลูกค้าเพียงส่งการเปลี่ยนเส้นทาง แต่ฉันไม่แน่ใจว่าคำที่ถูกต้องคืออะไร ฉันยังไม่แน่ใจว่าเป้าหมายคืออะไร แต่จะเติมบันทึกของคุณด้วยเสียงรบกวนและใช้ CPU และแบนด์วิดท์ของคุณดังนั้นคุณอาจหยุดการใช้งาน