如何通过单个端口处理encryption和未encryption的http连接

请看下面的图表。

替代文字http://i30.tinypic.com/8wk4tt.png

这个怎么工作?

我的问题是

  1. 你有没有在生产环境中部署这样的解决scheme? 如果你有…
  2. 你用什么产品作为应用程序网关?
  3. 你能提供一个configuration例子吗?

硬限制

  • 没有防火墙的控制权 ,通过它我可以获得外部stream量进入内部服务器的唯一端口是8080.端口号是无关紧要的,只是有一个端口在防火墙级别打开,转发传入stream量到内部服务器。
  • 内部服务器必须运行Linux(目前正在运行Debian Lenny)
  • 远程用户只需要使用当前的Web浏览器和Internet连接即可访问此服务器。 这意味着通过SSH的反向端口转发不是一个选项。
  • 我需要一个经过生产testing的产品,并且可以很容易地部署。 我不打算开发自己的应用程序网关 (如果是这样的话,我想我会问在堆栈溢出这个问题,而不是在服务器故障问)。

软限制

  • 我想避免将Apache作为应用程序网关(尽pipe如果这是唯一可能的select,我愿意这样做)
  • 如果可能的话,应用程序网关应该是一个成熟的开源软件产品。

产品尝试到应用程序网关 (没有成功)

相关的RFC

  • RFC2817(… 解释了如何使用HTTP / 1.1中的升级机制来通过现有的TCP连接启动传输层安全性(TLS),这使得不安全和安全的HTTPstream量可以共享相同的已知端口 …)
  • RFC2818(… 描述了如何使用TLS来保护通过Internet的HTTP连接。目前的做法是将HTTP over SSL(TLS的前身)分层,通过使用不同的服务器端口来区分安全stream量和不安全stream量 。 )

在此先感谢,亚历克斯

一个端口统治他们,显示有人至less在Java世界实现它。

你有没有在生产环境中部署这样的解决scheme?

我没有 – 我也不会推荐这样做。 作为顾问,我试图鼓励我的客户使用标准化和成熟的技术。 除了边缘案例,没有一个系统似乎能够正确地实现这些RFC,而这并不是我想要build议或支持的。

Apache在这里不会帮你。 它只能侦听任何给定端口上的HTTP或HTTPS连接(不能同时连接)。

据我所知,没有实现这个function的“成熟产品”。 让您的networkingpipe理员在防火墙上打出另一个漏洞,或者设置VPN或SSH隧道到外部端点,您可以在其中设置多个侦听端口。