使用lihgttpd使用单个端口处理http和https请求

目前我使用httphttps作为不同的端口。 并根据请求uri,我做了一个redirect规则从http到https交换机,反之亦然。 但是如果我只能使用一个单一的端口https和https lighttpd。 这将是最好的解决scheme。

有没有其他方法可以做到这一点。 如果它不是由lighttpd本身提供的。 tomcat和lighttpd的组合怎么样,还是不可能?

你所希望的是HTTP的STARTTLS 。 这实际上是由RFC 2817提出的,它是用现在的Ye Olden Days of Yon Internete编写的。 我发现一些快速参考文献提示Apache和lighthttpd支持这一点,但进一步的研究令lighttpd感到失望 – 对此深表歉意。 不过,这里有关于使用Apache进行设置的文档。 基本上:

<VirtualHost _default_:80> SSLEngine optional ... </VirtualHost> 

也没有客户支持。 IE7支持一些漂亮的TLS扩展(基于名称的SSL证书在我们的生命周期中可能是可能的),但显然不是STARTTLS / RFC 2817.而Mozilla也有一个开放的错误 ,还有许多细节尚待解决。 其中一个问题是RFC使得encryption确实是可选的,而这对于大多数Internet上的encryption应用通常是不可取的。 但是,由于您使用的是自定义客户端,因此缺less一般的浏览器支持和安全问题都不是问题。

不可行。 HTTP和HTTPS是两种不同的服务,其行为方式明显不同(尽pipe命名和有效负载相似)。 唯一的服务必须绑定到唯一的端口,以使客户端和服务器能够以一种语言进行通信。

为了达到这个目的,你需要一个连接到端口的客户端,协商进行哪种types的连接(HTTP或HTTPS),然后切换到适当的通信模式。 协商逻辑在客户端不存在,所以你无法实现这个服务器端。