โปรดดูแผนภาพต่อไปนี้
งานนี้ควรทำยังไง?
เมื่อรีโมตร้องขอ http: // myhost.com:8080/* คำขอควรถูกส่งต่อไปยังเซิร์ฟเวอร์ http ที่รับฟังพอร์ต 8008 ของอินเตอร์เฟสลูปแบ็ค นี่คือส่วนที่ง่าย
เมื่อผู้ใช้ระยะไกลร้องขอ http: // myhost.com:8080/specialurl ...
โปรแกรมที่ทำหน้าที่เป็นเกตเวย์ระดับแอปพลิเคชันควรจะสามารถอัพเกรดการเชื่อมต่อไปยังเซสชันที่เข้ารหัส ( โดยไม่เปลี่ยนพอร์ต )
หลังจากสร้างเซสชันที่เข้ารหัสด้วยเบราว์เซอร์ระยะไกลแล้วควรส่งต่อการร้องขอไปยังโปรแกรม C ที่ฟังพอร์ต 8000 ของอินเตอร์เฟสลูปแบ็ค
คำถามของฉันคือ :
- คุณเคยปรับใช้โซลูชันเช่นนี้ในสภาพแวดล้อมการผลิตหรือไม่? ถ้าคุณมี...
- ผลิตภัณฑ์ใดที่คุณใช้เพื่อทำหน้าที่เป็นเกตเวย์แอปพลิเคชัน
- คุณสามารถให้ตัวอย่างการกำหนดค่าได้หรือไม่
ข้อ จำกัด อย่างหนัก :
- ฉันไม่สามารถควบคุมไฟร์วอลล์ได้และพอร์ตเดียวที่ฉันสามารถรับทราฟฟิกภายนอกเข้าสู่เซิร์ฟเวอร์ภายในได้คือ 8080 หมายเลขพอร์ตไม่เกี่ยวข้องสิ่งนี้คือมีพอร์ตเดียวที่เปิดในระดับไฟร์วอลล์ที่ส่งต่อขาเข้า การรับส่งข้อมูลไปยังเซิร์ฟเวอร์ภายใน
- เซิร์ฟเวอร์ภายในต้องใช้งาน Linux (ขณะนี้กำลังเรียกใช้ Debian Lenny)
- ผู้ใช้ระยะไกลไม่ต้องการอะไรมากไปกว่าเว็บเบราว์เซอร์ปัจจุบันและการเชื่อมต่ออินเทอร์เน็ตเพื่อเข้าถึงเซิร์ฟเวอร์นี้ ซึ่งหมายความว่าการส่งต่อพอร์ตย้อนกลับผ่าน SSH ไม่ใช่ตัวเลือกที่นี่
- ฉันต้องการผลิตภัณฑ์ที่ได้รับการทดสอบในการผลิตและสามารถนำไปใช้ได้อย่างง่ายดาย ฉันไม่ต้องการพัฒนาแอปพลิเคชันเกตเวย์ของฉันเอง (ถ้าเป็นเช่นนั้นฉันเดาว่าฉันจะถามคำถามนี้ที่ Stack Overflow แทนที่จะถามที่ Server Fault)
ข้อ จำกัด ที่อ่อนนุ่ม :
- ฉันต้องการหลีกเลี่ยงการวาง Apache เป็นเกตเวย์แอปพลิเคชัน (แม้ว่าฉันยินดีที่จะทำเช่นนั้นหากเป็นตัวเลือกที่เป็นไปได้เท่านั้น)
- ถ้าเป็นไปได้แอพพลิเคชันเกตเวย์ควรเป็นผลิตภัณฑ์ซอฟต์แวร์โอเพ่นซอร์สที่สมบูรณ์
ผลิตภัณฑ์ที่ทดลองจนถึงแอปพลิเคชันเกตเวย์ (ไม่สำเร็จ)
- Nginx
- lighttpd
- ปอนด์
RFC ที่เกี่ยวข้อง
- RFC2817 (... อธิบายวิธีใช้กลไกการอัพเกรดใน HTTP / 1.1 เพื่อเริ่มต้น Transport Layer Security (TLS) ผ่านการเชื่อมต่อ TCP ที่มีอยู่ซึ่งจะช่วยให้การรับส่งข้อมูล HTTP ที่ไม่ปลอดภัยและมีความปลอดภัยในการแบ่งปันพอร์ตที่รู้จักกันดี ...
- RFC2818 (... อธิบายถึงวิธีการใช้ TLS เพื่อรักษาความปลอดภัยการเชื่อมต่อ HTTP ผ่านอินเทอร์เน็ตแนวปฏิบัติในปัจจุบันคือการเลเยอร์ HTTP ผ่าน SSL (รุ่นก่อนถึง TLS) โดยแยกการรับส่งข้อมูลที่ปลอดภัยจากการรับส่งข้อมูลที่ไม่ปลอดภัยโดยการใช้พอร์ตเซิร์ฟเวอร์อื่น ... )