ฉันกำลังพยายามรับส่งข้อมูลพร็อกซี SSH จาก nginx (ฟังที่พอร์ต 7999) ไปยังเซิร์ฟเวอร์ bitbucket (ฟังที่พอร์ต 7998) ที่ส่วนหลัง ทั้ง nginx และ bitbucket กำลังทำงานอยู่ภายในคอนเทนเนอร์ Docker ถ้าฉันลงชื่อเข้าใช้คอนเทนเนอร์ nginx และทำ เทลเน็ต bitbucket.domain-name.com 7998
มันเชื่อมต่อ บนเครื่องโฮสต์ถ้าฉันทำ netstat -pnlt
ฉันเข้าใจ:
การเชื่อมต่ออินเทอร์เน็ตที่ใช้งานอยู่ (เฉพาะเซิร์ฟเวอร์)
Proto Recv-Q Send-Q Local Address ที่อยู่ต่างประเทศ State PID/ชื่อโปรแกรม
tcp6 0 0 :::2377 :::* ฟัง 24477/นักเทียบท่า
tcp6 0 0 :::7946 :::* ฟัง 24477/dockerd
tcp6 0 0 :::80 :::* ฟัง 24477/นักเทียบท่า
tcp6 0 0 :::443 :::* ฟัง 24477/นักเทียบท่า
tcp6 0 0 :::7999 :::* ฟัง 24477/นักเทียบท่า
แต่ฉันทำสิ่งนี้บนคอมพิวเตอร์: git โคลน ssh://[email protected]:7999/project_key/repo_name.git
ฉันเข้าใจ
กำลังโคลนเป็น 'repo_name'...
ssh: เชื่อมต่อกับโฮสต์ domain-name.com พอร์ต 7999: การเชื่อมต่อถูกปฏิเสธ
ร้ายแรง: ไม่สามารถอ่านจากที่เก็บระยะไกล
และเมื่อฉันทำ telnet โดเมนเนม.com 7999
ฉันเข้าใจ telnet: ไม่สามารถเชื่อมต่อกับโฮสต์ระยะไกล: การเชื่อมต่อถูกปฏิเสธ
.
ดูเหมือนว่าปัญหาคือ nginx ไม่ฟังพอร์ต 7999 ภายในคอนเทนเนอร์นักเทียบท่า แต่บนโฮสต์ฉันสามารถเห็นได้ นักเทียบท่า
กำลังฟังที่พอร์ต 7999 ฉันคิดว่าฉันอาจกำหนดค่า nginx ไม่ถูกต้อง แต่ฉันไม่แน่ใจ นี่คือบิตที่เกี่ยวข้องจากไฟล์ปรับแต่ง
นักเทียบท่า-compose.yaml (nginx)
บริการ:
จิงซ์:
พอร์ต:
- "80:8080"
- "443:8443"
- "7999:7997"
nginx.conf (ภายในคอนเทนเนอร์ nginx)
ลำธาร {
เซิร์ฟเวอร์ {
ฟัง 7997;
proxy_pass bitbucket1.cybertron.ninja:7998;
}
}
และนี่คือผลลัพธ์บางส่วนที่ดำเนินการภายในคอนเทนเนอร์ nginx:
root@6d123f454eef:/# netstat -pnlt
การเชื่อมต่ออินเทอร์เน็ตที่ใช้งานอยู่ (เฉพาะเซิร์ฟเวอร์)
Proto Recv-Q Send-Q Local Address ที่อยู่ต่างประเทศ State PID/ชื่อโปรแกรม
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 10/nginx: master pr
tcp 0 0 0.0.0.0:8443 0.0.0.0:* LISTEN 10/nginx: master pr
tcp 0 0 127.0.0.11:44703 0.0.0.0:* ฟัง -
ความคิดใดที่จะแก้ไขปัญหานี้ ฉันนิ่งงัน