ฉันสามารถแมปชื่อโฮสต์ * และ * พอร์ตกับ / etc / hosts ได้ไหม [ปิด]


189

ฉันสามารถจับคู่ที่อยู่ IP 127.0.0.1กับชื่อโดเมนและพอร์ตได้หรือไม่

ตัวอย่างเช่นฉันต้องการแมป127.0.0.1กับapi.example.com:8000


6
คุณไม่สามารถแมปหมายเลขพอร์ตใน / etc / hosts แต่คุณสามารถกำหนดเป็น127.0.0.1 api.mydomain.comและเข้าถึงได้ในเบราว์เซอร์เช่นapi.mydomain.com:8080
Fizer Khan

ฉันอ่านบางแห่งที่ DNS สนับสนุนสิ่งนี้ คุณสามารถมีระเบียนที่ระบุไว้ใน www.example.com http อยู่ในพอร์ต 80 และเรคคอร์ด A เพื่อบอกว่าที่อยู่คือ 127.0.0.1 มันยังบอกด้วยว่ามันไม่ได้รับการสนับสนุนอย่างดี มันไม่ได้พูดอะไรมากหลังจากนั้น
ctrl-alt-delor

คำตอบ:


185

ไม่นั่นเป็นไปไม่ได้ พอร์ตไม่ได้เป็นส่วนหนึ่งของชื่อโฮสต์ดังนั้นจึงไม่มีความหมายในhosts-file


134

หากคุณต้องการทำสิ่งนี้จริงๆให้ใช้ reverse proxy

ตัวอย่างเช่นกับ nginx เป็น reverse proxy

server {
  listen       api.mydomain.com:80;
  server_name  api.mydomain.com;
  location / {
    proxy_pass http://127.0.0.1:8000;
  }
}

4
ฉันคิดว่าบรรทัดของ proxy_pass ควรมีลักษณะเช่นนี้: proxy_pass http://127.0.0.1:8000;ฉันได้รับ "คำนำหน้า URL ไม่ถูกต้อง" ใน nginx 1.4.3
Nobu

ขอบคุณสำหรับเคล็ดลับที่ยอดเยี่ยมนี้! ทางออกที่ง่ายสำหรับเซิร์ฟเวอร์ส่วนใหญ่
micahscopes

ฉันใช้เคล็ดลับนี้เพื่อแมปพอร์ตของเครื่องระยะไกล (เช่นcloud.app:80ขณะที่พอร์ตจริงคือ 8080) มีประโยชน์มากสำหรับการทดสอบโหนด Confluence ของคลัสเตอร์ แต่เข้าถึงได้บน URL ฐานเดียวกัน ขอบคุณ!
Gábor Nagy

9
ฉันมีปัญหาเดียวกันโดยทั่วไปและการแก้ปัญหาโดยใช้ reverse-proxy นี้มีประโยชน์จริงๆ แม้ว่าฉันต้องการวิธีแก้ปัญหาที่ง่ายกว่าดังนั้นฉันจึงทำเครื่องมือนี้: github.com/cristianoliveira/ergo ฉันหวังว่ามันจะช่วยได้บ้าง :)
Cristian Oliveira

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