คำตอบง่ายๆที่เกี่ยวข้องกับระดับของคำถาม
ไม่สนใจการใช้ DNS แปลกใหม่และย้อนกลับการค้นหา DNS (ไม่เกี่ยวข้องกับคำถาม) การใช้ DNS เกือบทั้งหมดเป็นรูปแบบ:
- ไคลเอนต์ส่งชื่อโดเมน (แบบเต็มหรืออื่น ๆ ) ไปยังเซิร์ฟเวอร์ DNS
- เซิร์ฟเวอร์ DNS ส่งคืนข้อมูลโดเมนจากระเบียน โดยทั่วไปแล้วข้อมูลสำคัญที่ร้องขอคือที่อยู่ IP เพื่อสื่อสารกับเว็บ / อีเมลในโดเมนนั้นหรือที่อยู่ IP ของเซิร์ฟเวอร์ DNS อื่นที่สามารถให้ข้อมูลนั้นได้ดีกว่า
เมื่อไคลเอนต์ติดต่อกับเซิร์ฟเวอร์แล้วเซิร์ฟเวอร์จะเข้าควบคุมและระบบ DNS จะไม่ทำงาน
หมายความว่าอะไรระบบ DNS ไม่จำเป็นต้องให้ข้อมูลพอร์ตและแทบไม่เคยทำเช่นนั้น ดังนั้นแม้ว่าเป้าหมายของคำถามจะถูกต้องและมักจะทำ แต่จริงๆแล้วมันไม่ใช่ระบบ DNS ที่ทำ นั่นเป็นเหตุผลที่คุณไม่สามารถทำงานได้ :)
แนวคิดคือเมื่อลูกค้าของคุณสามารถค้นหาเครื่องหรือเซิร์ฟเวอร์ที่ต้องการได้มันจะลงไปที่เครื่องเพื่อฟังพอร์ตใด ๆ ที่เลือกและยอมรับ / ปฏิเสธ / ตอบสนองต่อโปรโตคอลใด ๆ บนพอร์ตที่กำหนดค่าไว้
ตัวอย่างเช่นบริการเว็บ HTTP มักจะมีให้ในพอร์ต 80 ซึ่งหมายความว่าเมื่อไคลเอ็นต์รู้ IP ของเครื่องก็สามารถสันนิษฐานได้ว่าการส่งข้อความไปยังพอร์ต 80 จะส่งผลให้ข้อความนั้นถูกอ่าน / ตอบกลับโดยบริการเว็บของเครื่องนั้น แต่มันไม่จำเป็นต้องเป็นอย่างนั้น หากเซิร์ฟเวอร์ได้รับการกำหนดค่าให้ฟังการร้องขอขาเข้าของเว็บในพอร์ต 9000 ไคลเอ็นต์ใด ๆ ที่สามารถเข้าถึงพอร์ต 9000 จะสามารถเข้าถึงบริการทางเว็บได้ หากเซิร์ฟเวอร์อยู่หลังพร็อกซี / NAT / เราเตอร์ที่เปลี่ยนเส้นทางพอร์ต 10,000 ไปยังพอร์ต 9000 และไคลเอนต์ส่งคำขอเว็บที่พอร์ต 10000 เซิร์ฟเวอร์จะรับพอร์ตบนพอร์ต 9000 และตอบสนองเช่นกัน
เปลี่ยนเส้นทาง / ทำแผนที่ภายในเว็บเซิร์ฟเวอร์
คุณถามเกี่ยวกับการเปลี่ยนเส้นทางการทำแผนที่หรือเขียนใหม่ในความคิดเห็น นี่คือฟังก์ชั่นที่เว็บเซิร์ฟเวอร์สามารถทำได้ โดยทั่วไปคุณสามารถกำหนดค่าเว็บเซิร์ฟเวอร์ (หรือเว็บเซิร์ฟเวอร์ส่วนใหญ่ / มากที่สุด) เพื่อจัดการวิธีจัดการ URL ที่ได้รับในคำขอ ดังนั้นจึงสามารถแก้ไข URL ในใบเสร็จเพื่อให้ URL ต่าง ๆ ได้รับการจัดการในลักษณะเดียวกันหรือแก้ไขการพิมพ์ผิดปกติ (การจับคู่) หรือสามารถตอบกลับบอกลูกค้าว่าให้ถามตัวเองเป็นครั้งที่สองโดยใช้ URL ที่แตกต่างกันทดแทน (การเปลี่ยนเส้นทาง)
สิ่งเหล่านี้มีการใช้งานและในหลักการสามารถจัดการกับกรณีการใช้งานของคุณ แต่พวกเขาไม่ได้ดูเหมือนโซลูชันที่ "ถูกต้อง" สำหรับคุณด้วยเหตุผลเหล่านี้:
- ฉันไม่คิดว่าการทำแผนที่จะช่วยได้เลย การทำแผนที่เกือบทั้งหมดภายในเว็บเซิร์ฟเวอร์กล่าวว่า "จัดการURL นี้เสมือนว่าเป็นURL นั้น " ตัวอย่างเช่นคุณอาจใช้การแมป URL ของเว็บเซิร์ฟเวอร์เพื่อให้ผู้ใช้สามารถสืบค้นฟอรัมโดยใช้ URL ที่เก่ามากและเก่า (เพื่อความสะดวกของผู้ใช้) โดยใช้ " https://example.com/index.php?area-=forum&topic = 2 "," https://example.com/forum.php?topic=2 "และ" https://forum.example.com?topic=2 "ด้วย"และจัดการสิ่งนี้เพียงครั้งเดียวโดยการจับคู่สองรายการแรกไปยัง URL ที่สามภายในเป็นขั้นตอนแรกในการจัดการคิวรีเนื่องจากเป้าหมายนี้ส่งผลต่อเส้นทางคิวรีที่ไม่ใช่ IP / พอร์ตการจับคู่ไม่ได้ใช้มากนัก การจัดการพอร์ตและในกรณีของคุณไคลเอนต์ไม่เคยสอบถามจริง ๆ 8080 เลย
- เปลี่ยนเส้นทางจะทำงาน แต่อาจจะไม่เป็นสิ่งที่คุณต้องการ การเปลี่ยนเส้นทางในเว็บเซิร์ฟเวอร์นั้นขึ้นอยู่กับเว็บเซิร์ฟเวอร์ที่ได้รับการสืบค้นจริง ๆ (เพราะฟังก์ชั่นเหล่านี้เป็นฟังก์ชั่นภายในของเว็บเซิร์ฟเวอร์) ดังนั้นเว็บเซิร์ฟเวอร์จะต้องฟังบนพอร์ต 80 ต่อไปเพื่อรับคิวรีดั้งเดิมเพื่อตอบสนองด้วยการเปลี่ยนเส้นทาง / แผนที่ นอกจากนี้ยังจะต้องฟังบนพอร์ต 8080 ด้วยฟังก์ชั่นก็จะต้องมีกฎการเปลี่ยนเส้นทางที่จะต้องบอกลูกค้าใด ๆ ที่สอบถามพอร์ต 80 เพื่อสอบถามอีกครั้งโดยใช้ URL ": 8080" ซึ่งไม่เหมือนสิ่งที่คุณต้องการ ทำ. ผู้ใช้จะเห็น URL ใหม่ที่มี ": 8080" อยู่ด้วยในขณะที่ดูเหมือนว่าคุณต้องการให้เป็น "โปร่งใส" และไม่แสดง
- การเปลี่ยนเส้นทางยังทำได้เพียงเพื่อเปลี่ยนเส้นทางพอร์ตมาตรฐาน (80 หรือ 443) - คุณไม่สามารถเปลี่ยนเส้นทางพอร์ต 2000 เป็น 8080 ได้เนื่องจากลูกค้าจะไม่สอบถามใน 2000 ตามค่าเริ่มต้นในตอนแรกดังนั้นจึงไม่เคยเปลี่ยนเลย ไปที่เว็บเซิร์ฟเวอร์แม้ว่าจะฟังอยู่ในปี 2000 นี่อาจไม่เป็นปัญหาสำหรับคุณ
แต่ถ้าคุณต้องการเปลี่ยนเส้นทาง "อัจฉริยะ" ที่มีเพียงคำสั่งบางอย่างจะเปลี่ยนเส้นทางไปยัง 8080 นี้อาจจะมีวิธีที่จะไปเพราะการเปลี่ยนเส้นทางสามารถรวมตรรกะที่จะตัดสินใจว่า URL ที่ควรจะเปลี่ยนเส้นทางในขณะที่พอร์ตการทำแผนที่ (ด้านล่าง) จะ map ทุกอย่าง
ทำอย่างไรให้ถูกต้อง
คำตอบสำหรับคำถามของคุณคือคุณต้องการให้เว็บเซิร์ฟเวอร์ตอบสนองต่อคำขอเว็บที่ลูกค้าส่งไปยังพอร์ตเริ่มต้น (80/443) แต่ที่เซิร์ฟเวอร์ได้รับจริงบนพอร์ต 8080
นั่นหมายความว่าคุณสามารถเห็นสิ่งที่คุณต้องในระหว่างที่แมปพอร์ตระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ ด้วยวิธีนี้ไคลเอ็นต์ส่งพอร์ต 80 (พอร์ตเริ่มต้นที่ใช้โดยเว็บเบราว์เซอร์) แต่จริง ๆ แล้วได้รับเว็บพอร์ต 8080 จากเว็บเซิร์ฟเวอร์ แน่นอนคุณจะต้องกำหนดค่าเว็บเซิร์ฟเวอร์ให้ฟังบนพอร์ต 8080 เนื่องจากนี่ไม่ใช่มาตรฐาน แต่มันง่ายและเว็บเซิร์ฟเวอร์ใด ๆ ก็ควรจะสามารถระบุพอร์ตการรับฟังได้
วิธีปกติที่สุดในการทำเช่นนี้คือเราเตอร์ / ไฟร์วอลล์ผ่านการแมปพอร์ต
กล่าวง่ายๆว่าในการทำเช่นนี้เราเตอร์จะได้รับกฎว่าสิ่งที่ได้รับซึ่งมี IP ปลายทางและพอร์ตปลายทาง = 80 ควรส่งผ่านไปยัง LAN ด้วยพอร์ตปลายทางเปลี่ยนเป็น 8080 แทน ทั้งเว็บเซิร์ฟเวอร์และไคลเอนต์จะไม่รับรู้ถึงการเปลี่ยนแปลง (เราเตอร์จัดการได้ 100%) ดังนั้นจึงโปร่งใสทั้งคู่ 100% ไคลเอนต์จะไม่มี ": 8080" ใน URL ของมันและไม่จำเป็นต้องเปลี่ยนเส้นทางอะไรเพราะมันทำการค้นหาพอร์ต 80 และเว็บเซิร์ฟเวอร์สามารถละเว้นพอร์ต 80 และฟัง 8080 เท่านั้นเพราะมันไม่เคยได้รับการสืบค้นบนพอร์ต 80 .
หากคุณต้องการวิธีที่เรียบง่ายตรงไปตรงมาคล้ายกับสิ่งที่ "DNS สำหรับพอร์ต" ทำนี่อาจเป็นสิ่งที่ใกล้เคียงที่สุดกับสิ่งที่คุณขอในคำถามของคุณ