请看下图。
这应该如何工作?
当远程请求http:// myhost.com:8080/*时,应将请求转发到侦听回送接口端口8008的http服务器。这是简单的部分。
当远程用户请求http:// myhost.com:8080/specialurl ...
充当应用程序级别网关的程序应该能够将连接升级到加密的会话(无需更改端口)
与远程浏览器建立加密会话后,它应将请求转发到侦听回送接口端口8000的C程序。
我的问题是:
- 您是否曾经在生产环境中部署过这样的解决方案?如果你有...
- 您使用什么产品充当应用程序网关?
- 您能否提供一个配置示例?
硬限制:
- 我无法控制防火墙,并且我可以通过该端口将外部流量传入内部服务器的唯一端口是8080。该端口号无关紧要,问题是在防火墙级别只有一个开放的端口可以转发入站内部服务器的流量。
- 内部服务器必须正在运行Linux(当前正在运行Debian Lenny)
- 远程用户只需要使用当前的Web浏览器和Internet连接即可访问该服务器。这意味着此处不能通过SSH进行反向端口转发。
- 我需要一种已经在生产中经过测试并且可以轻松部署的产品。我不想开发自己的应用程序网关(如果是这种情况,我想我会在Stack Overflow上问这个问题,而不是在Server Fault上问这个问题)。
软限制:
- 我想避免将Apache用作应用程序网关(尽管如果这是唯一的选择,我愿意这样做)
- 如果可能,应用程序网关应该是成熟的开源软件产品。
到目前为止,产品已尝试作为应用程序网关(没有成功)
- Nginx的
- lighttpd
- 磅
相关RFC
- RFC2817(... 说明了如何使用HTTP / 1.1中的升级机制通过现有的TCP连接来发起传输层安全性(TLS)。这允许不受保护的HTTP流量共享相同的知名端口。)
- RFC2818(... 描述了如何使用TLS来保护Internet上的HTTP连接。目前的做法是在SSL(TLS的前身)上对HTTP进行分层,通过使用不同的服务器端口来区分安全流量和不安全流量 ... )
“当远程用户请求http:// myhost.com:8080/specialurl ...充当应用程序级别网关的程序应该能够将连接升级到加密的会话(无需更改端口)”在客户端这可能吗?客户端浏览器是否支持通过不包含https的URL运行SSL?
—
亚当·布兰德
嗨,亚当,谢谢您的评论。请求myhost.com:8080/specialurl之后,应将浏览器重定向到myhost.com:8080/specialurl。我不确定其他浏览器,但是Opera和Firefox的最新版本似乎对此没有问题。
—
alemartini