Silakan lihat diagram berikut.
Bagaimana cara kerjanya?
Ketika permintaan jarak jauh http: // myhost.com:8080/*, permintaan tersebut harus diteruskan ke server http yang mendengarkan port 8008 dari antarmuka loopback. Ini bagian yang mudah.
Ketika pengguna jarak jauh meminta http: // myhost.com:8080/specialurl ...
Program yang bertindak sebagai gateway level aplikasi harus dapat meningkatkan koneksi ke sesi terenkripsi ( tanpa mengubah port )
Setelah membuat sesi terenkripsi dengan browser jarak jauh, itu harus meneruskan permintaan ke program C yang mendengarkan pada port 8000 dari antarmuka loopback
Pertanyaan saya adalah :
- Apakah Anda pernah menggunakan solusi seperti ini di lingkungan produksi? Jika Anda memiliki...
- Produk apa yang Anda gunakan untuk bertindak sebagai gateway aplikasi?
- Bisakah Anda memberikan contoh konfigurasi?
Batasan keras :
- Saya tidak memiliki kendali atas firewall , dan satu-satunya port yang melaluinya saya bisa mendapatkan traffic eksternal ke server internal adalah 8080. Nomor port tidak relevan, masalahnya adalah bahwa hanya ada satu port terbuka di level firewall yang meneruskan masuk lalu lintas ke server internal.
- Server internal harus menjalankan Linux (saat ini menjalankan Debian Lenny)
- Pengguna jarak jauh seharusnya tidak lebih dari browser web saat ini dan koneksi Internet untuk mengakses server ini. Ini berarti bahwa membalikkan port forwarding melalui SSH bukanlah suatu opsi di sini.
- Saya membutuhkan produk yang telah diuji dalam produksi dan yang dapat dengan mudah digunakan. Saya tidak ingin mengembangkan gateway aplikasi saya sendiri (jika itu masalahnya, saya kira saya akan menanyakan pertanyaan ini di Stack Overflow alih-alih menanyakannya di Server Fault).
Pembatasan lembut :
- Saya ingin menghindari menempatkan Apache sebagai gateway aplikasi (walaupun saya bersedia melakukannya jika itu satu-satunya pilihan)
- Jika memungkinkan, gateway aplikasi harus merupakan produk perangkat lunak open source yang matang.
Produk mencoba sejauh gateway aplikasi (tanpa hasil)
- nginx
- lighttpd
- pound
RFC yang relevan
- RFC2817 (... menjelaskan cara menggunakan mekanisme Upgrade dalam HTTP / 1.1 untuk memulai Transport Layer Security (TLS) melalui koneksi TCP yang ada. Ini memungkinkan lalu lintas HTTP yang tidak aman dan aman untuk berbagi port terkenal yang sama ...)
- RFC2818 (... menjelaskan cara menggunakan TLS untuk mengamankan koneksi HTTP melalui Internet. Praktek saat ini adalah untuk melapisi HTTP melalui SSL (pendahulu ke TLS), membedakan lalu lintas aman dari lalu lintas tidak aman dengan menggunakan port server yang berbeda ... )
Jawaban:
Satu port untuk mengatur semuanya, menunjukkan seseorang setidaknya mengimplementasikannya di dunia java.
Saya belum - saya juga tidak akan merekomendasikan hal itu dilakukan. Sebagai seorang konsultan, saya mencoba mendorong klien saya untuk menggunakan teknologi standar dan terbukti. Tampaknya tidak ada sistem yang mengimplementasikan RFC kecuali untuk kasus tepi - dan itu bukan sesuatu yang ingin saya sarankan atau dukung.
sumber
Apache tidak akan membantu Anda di sini. Itu hanya dapat mendengarkan koneksi HTTP atau HTTPS (tidak keduanya) pada port yang diberikan.
Sejauh yang saya tahu, tidak ada "produk matang" yang mengimplementasikan fungsi ini. Buat administrator jaringan Anda membuat lubang lain di firewall Anda, atau mengatur terowongan VPN atau SSH ke titik akhir eksternal di mana Anda dapat mengatur beberapa port mendengarkan.
sumber