Score:0

หลายบริการพร้อมพอร์ตที่แตกต่างกัน วิธีกำหนดค่าพร็อกซี nginx

ธง in

ฉันมีโครงสร้างดังต่อไปนี้:

IP สาธารณะ <-> vm โฮสต์ <-> vms

มีสอง vms: vm1_proxy_nginx vm2_service_docker_vm (ใช้พอร์ต 9000-9005)

Service_VM เป็นเซิร์ฟเวอร์แดชบอร์ดที่ทำงาน บนพอร์ตที่เปิดเผย 9001,9002 และ 9005 สำหรับการรับรองความถูกต้อง เข้าสู่ระบบและการสื่อสารการบันทึกข้อมูลระหว่าง ผู้ใช้และ vm

ตอนนี้ฉันเปลี่ยนเส้นทางใน nginx reverse proxy http และ https ไปที่ /9001 เพื่อเข้าสู่ระบบ

จากนั้นฉันพบว่าการกำหนดค่านี้นำไปสู่ปัญหาเนื่องจาก ไม่ได้รับการสื่อสารกลับ (หลังจากเข้าสู่ระบบสำเร็จ เซิร์ฟเวอร์เปลี่ยนเส้นทางไปยังบริการแดชบอร์ด 9002)

https://ip.ip.ip.io:9002/?token=

มีใครทราบวิธีจัดการกับปัญหานี้โดยไม่สูญเสียความปลอดภัยและปัญหา ssl หรือไม่

ฉันรู้ว่าการปรับใช้บริการใหม่เพื่อไม่ให้ใช้พอร์ตที่ถูกเปิดเผยเช่นนี้ แต่ฉันต้องการวิธีแก้ไขในขณะเดียวกัน....

Score:0
ธง br

วิธีที่ง่ายที่สุดในการแก้ปัญหานี้คือรักษาพอร์ตมาตรฐานทั้งหมดไว้ และสร้างบล็อกเซิร์ฟเวอร์ 2 บล็อกในการกำหนดค่าของคุณ บล็อกหนึ่งสำหรับทุกพอร์ต โดยทำหน้าที่เป็นพร็อกซีย้อนกลับที่ส่งต่อทราฟฟิกทั้งหมดไปยังพอร์ตเป้าหมาย ตัวอย่างเช่น:

เซิร์ฟเวอร์ {
        ฟัง 9001 ssl http2;
        ssl_certificate *เส้นทางสู่ใบรับรอง*;
        ssl_certificate_key * patch-to-private-key;
        server_name xyz.yourdomain.com;

              proxy_set_header โฮสต์ $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_pass http://*ipofupstreamserver*:9001;
}

เซิร์ฟเวอร์ {
        ฟัง 9002 ssl http2;
        ssl_certificate *เส้นทางสู่ใบรับรอง*;
        ssl_certificate_key * patch-to-private-key;
        server_name xyz.yourdomain.com;

              proxy_set_header โฮสต์ $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_pass http://*ipofupstreamserver*:9002;
}

เซิร์ฟเวอร์ {
        ฟัง 9005 ssl http2;
        ssl_certificate *เส้นทางสู่ใบรับรอง*;
        ssl_certificate_key * patch-to-private-key;
        server_name xyz.yourdomain.com;

              proxy_set_header โฮสต์ $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_pass http://*ipofupstreamserver*:9005;
}

คุณอาจต้องปรับเปลี่ยนว่าคุณต้องการใช้ http หรือ https สำหรับการสื่อสารอัปสตรีม หรือคุณสามารถวางส่วนหน้าที่จะนำเสนออินเทอร์เฟซการเข้าสู่ระบบบนพอร์ตมาตรฐาน 443 หากควรเปิดเผยต่อสาธารณะ และมีตัวเลือกอื่นๆ มากมายให้ ปรับแต่ง แต่สิ่งนี้ควรช่วยให้คุณเริ่มต้นได้

user3882511 avatar
in flag
ขอบคุณสำหรับความช่วยเหลือ ฟัง 9001 หมายความว่าฉันต้องเปิดพอร์ตนี้ด้วยหรือ จะเกิดอะไรขึ้นถ้าฉันต้องการใช้พอร์ตขาเข้าเริ่มต้นที่ 80 และ 443 และใช้ rproxy เพื่อเชื่อมต่อกับพอร์ตบริการภายใน 9001, 9002, 9005 เป็นไปได้ไหม
br flag
@ user3882511 ถ้าแอปพลิเคชันของคุณทำงานโดยไม่มีพอร์ตเหล่านั้นก็ใช่ หากต้องใช้พอร์ตเหล่านั้น ก็ไม่ต้อง ปัญหาคือหากแอปพลิเคชันของคุณสันนิษฐานว่าสามารถใช้พอร์ตเหล่านั้นได้และสั่งให้เบราว์เซอร์ทำการเชื่อมต่อกับพอร์ตเหล่านั้นแต่ถูกบล็อก ก็จะไม่สามารถสร้างการเชื่อมต่อได้... ดังนั้น สิ่งต่างๆ จะไม่ทำงาน :)

โพสต์คำตอบ

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