Xin vui lòng, hãy xem sơ đồ sau đây.
Làm thế nào điều này nên làm việc?
Khi một yêu cầu từ xa http: // myhost.com:8080/*, yêu cầu sẽ được chuyển tiếp đến máy chủ http lắng nghe trên cổng 8008 của giao diện loopback. Đây là phần dễ dàng.
Khi người dùng từ xa yêu cầu http: // myhost.com:8080/specialurl ...
Chương trình hoạt động như một cổng cấp ứng dụng sẽ có thể nâng cấp kết nối lên phiên được mã hóa ( không thay đổi cổng )
Sau khi thiết lập phiên được mã hóa với trình duyệt từ xa, nó sẽ chuyển tiếp yêu cầu đến chương trình C nghe trên cổng 8000 của giao diện loopback
Câu hỏi của tôi là :
- Bạn đã bao giờ triển khai một giải pháp như thế này trên môi trường sản xuất chưa? Nếu bạn có...
- Sản phẩm nào bạn đã sử dụng để hoạt động như một cổng ứng dụng?
- Bạn có thể cung cấp một ví dụ cấu hình?
Hạn chế cứng :
- Tôi không có quyền kiểm soát tường lửa và cổng duy nhất mà tôi có thể nhận lưu lượng truy cập bên ngoài vào máy chủ nội bộ là 8080. Số cổng không liên quan, điều duy nhất là chỉ có một cổng mở ở cấp tường lửa chuyển tiếp đến lưu lượng đến máy chủ nội bộ.
- Máy chủ nội bộ phải chạy Linux (hiện tại nó đang chạy Debian Lenny)
- Người dùng từ xa không cần gì nhiều hơn một trình duyệt web hiện tại và kết nối Internet để truy cập máy chủ này. Điều này có nghĩa là chuyển tiếp cổng ngược thông qua SSH không phải là một tùy chọn ở đây.
- Tôi cần một sản phẩm đã được thử nghiệm trong sản xuất và có thể dễ dàng triển khai. Tôi không tìm cách phát triển cổng ứng dụng của riêng mình (nếu đó là trường hợp, tôi đoán tôi sẽ hỏi câu hỏi này tại Stack Overflow thay vì hỏi nó tại Server Fault).
Hạn chế mềm :
- Tôi muốn tránh đặt Apache làm cổng ứng dụng (mặc dù tôi sẵn sàng làm điều đó nếu đó là lựa chọn khả thi duy nhất)
- Nếu có thể, cổng ứng dụng phải là một sản phẩm phần mềm nguồn mở hoàn thiện.
Sản phẩm đã thử cho đến khi cổng ứng dụng (không thành công)
- nginx
- lighttpd
- pao
RFC có liên quan
- RFC2817 (... giải thích cách sử dụng cơ chế Nâng cấp trong HTTP / 1.1 để khởi tạo Bảo mật lớp vận chuyển (TLS) qua kết nối TCP hiện có. Điều này cho phép lưu lượng HTTP không bảo mật và được bảo mật để chia sẻ cùng một cổng được biết đến ...)
- RFC2818 (... mô tả cách sử dụng TLS để bảo mật các kết nối HTTP qua Internet. Thực tế hiện tại là lớp HTTP qua SSL (tiền thân của TLS), phân biệt lưu lượng được bảo mật với lưu lượng không an toàn bằng cách sử dụng cổng máy chủ khác ... )