ตัวอย่างขั้นต่ำ
เครื่อง A และ B โดยที่ B ใช้ mDNS กับชื่อโดเมน ข. ท้องถิ่น
และตั้งค่าบริการ ssh ที่พอร์ต 2222 A และ B ไม่เปิดไฟร์วอลล์
ในเครื่อง A nginx.conf
:
ลำธาร {
ต้นน้ำ b-ssh {
เซิร์ฟเวอร์ b.local:2222;
}
เซิร์ฟเวอร์ {
ฟัง 2222;
ฟัง [::]:2222;
proxy_pass b-ssh;
}
}
เมื่อใช้งาน nginx -t
เพื่อทดสอบการกำหนดค่านี้บนเครื่อง A เกิดข้อผิดพลาด:
ไม่พบโฮสต์ [emerg] ในอัปสตรีม "b.local:2222"
อย่างไรก็ตาม ในเครื่อง A ใช้ ssh -p 2222 b.local
ใช้งานได้ปกติ (-4
หรือ -6
มีการทดสอบด้วย)
ข้อมูลที่อาจเป็นประโยชน์
ในตัวอย่างจริงของฉัน เครื่อง A เป็น Windows 11 ซึ่งปิดใช้งานไฟร์วอลล์ทั้งหมด เครื่อง B เป็น WSL2 ubuntu 21.10 ภายในเครื่อง A ซึ่งใช้บริการ avahi-daemon mDNS
ข้างในเครื่องเอ nginx.conf
ฉันยังตั้งค่า HTTP proxy pass:
http {
เซิร์ฟเวอร์ {
ฟัง 8929;
ฟัง [::]:8929;
ที่ตั้ง / {
proxy_pass http://b.local:8929;
}
}
}
และใช้งานได้ดีแม้ว่าจะใช้ชื่อโดเมน mDNS.
ถ้าฉันแทนที่ชื่อโดเมน mDNS ด้วย IP จริงในเซิร์ฟเวอร์อัปสตรีม พร็อกซี SSH จะทำงาน