Score:0

Nginx ไม่เปิดพอร์ตฟังที่ระบุ

ธง cn

ฉันกำลังพยายามรับส่งข้อมูลพร็อกซี 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:* ฟัง -            

ความคิดใดที่จะแก้ไขปัญหานี้ ฉันนิ่งงัน

tilleyc avatar
us flag
คุณมี iptables, firewalld หรือไฟร์วอลล์อื่น ๆ ทำงานอยู่หรือไม่?
in flag
ดูเหมือนว่า nginx จะไม่อ่านไฟล์ปรับแต่งของคุณ คุณใส่มันไว้ที่ไหน? รวมอยู่ในการกำหนดค่าหลักหรือไม่
cn flag
@tilleyc iptables กำลังทำงาน แต่ไม่มีการกำหนดกฎที่กำหนดเอง เฉพาะกฎที่กำหนดโดยอัตโนมัติโดยนักเทียบท่า
cn flag
@GeraldSchneider นี่คือข้อความที่ตัดตอนมาจาก `docker-compose.yaml`: ปริมาณ: - ./configs/nginx:/etc/nginx/conf.d:ro ฉันสามารถยืนยันได้ว่า nginx กำลังอ่านไฟล์ปรับแต่งอยู่ หากไม่มีก็จะไม่มีพร็อกซีพอร์ต 80->8080 หรือ 443->8443
in flag
เอาต์พุต netstat ของคุณจากภายในคอนเทนเนอร์ไม่แสดงพอร์ต 7997 จากการกำหนดค่าของคุณ หากคุณเพิ่มการกำหนดค่านั้นในภายหลัง คุณรีสตาร์ทคอนเทนเนอร์หรือไม่
Score:1
ธง in

ฉันเพิ่งตั้งค่าสภาพแวดล้อมการทดสอบสำหรับกรณีของคุณด้วยข้อมูลเล็กน้อยที่คุณให้มา สมมติว่าสิ่งที่คุณให้ไว้คือทุกสิ่งที่คุณเปลี่ยนแปลง สิ่งนี้จะไม่ทำงาน

nginx.conf เริ่มต้นภายในคอนเทนเนอร์ nginx อย่างเป็นทางการมี รวม คำสั่งภายในก http บล็อก:

http {
    # ...
    รวม /etc/nginx/conf.d/*.conf;
}

หากคุณเพิ่งวางไฟล์ .conf ของคุณลงในไดเร็กทอรี conf.d nginx จะล้มเหลวพร้อมกับข้อความแสดงข้อผิดพลาดต่อไปนี้:

23/09/2021 05:58:30 [ฉุกเฉิน] 1#1: ไม่อนุญาตให้ใช้คำสั่ง "สตรีม" ใน /etc/nginx/conf.d/blah.conf:1

เนื่องจาก nginx ของคุณกำลังทำงานอยู่ ฉันสามารถสันนิษฐานได้ว่าคุณวางการกำหนดค่าลงในไดเร็กทอรีหลังจากที่เริ่มต้นและไม่ได้รีสตาร์ทหรือโหลด nginx ใหม่

เดอะ ลำธาร คำสั่งต้องอยู่ในรูทของการกำหนดค่า คุณต้องระบุ nginx.conf ที่แก้ไขแล้วด้วย

คัดลอก nginx.conf จากคอนเทนเนอร์ของคุณ:

นักเทียบท่า cp test_nginx_1:/etc/nginx/nginx.conf

เพิ่มการกำหนดค่าของคุณที่นั่น หรือเพิ่มคำสั่ง include ที่สองด้วยไดเร็กทอรีแยกต่างหากและเมานต์เป็นโวลุ่มเช่นกัน:

ตัวอย่างเช่น เพิ่มภายนอกของ http {} บล็อก:

รวม /etc/nginx/conf.stream.d/*.conf;

เพิ่มสิ่งนี้ลงใน docker-compose.yml ของคุณ

บริการ:
จิงซ์:
    ภาพ: nginx
    ปริมาณ:
        - ./config/nginx.conf:/etc/nginx/nginx.conf:ro
        - ./config/nginx:/etc/nginx/conf.d:ro
        - ./config/nginx_stream:/etc/nginx/conf.stream.d:ro

วิ่ง นักเทียบท่าเขียนขึ้น -dและใช้งานได้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา