我的内部网络上有许多单独的SSL服务器,我希望在单个IP地址和端口上公开Internet。我的所有客户都保证支持server_name TLS扩展(a.k.a.Server名称指示或SNI)。
我想象的是,nginx会查看传入连接的TLS客户端问候消息,并确定将连接转发到哪个内部IP。然后nginx充当TCP隧道,即nginx本身不参与任何TLS会话(即使它查看传入的TLS客户端问候消息!),并且不需要自己的SSL证书或私钥。
换句话说,TLS会话在客户端上启动,pass-thru nginx(使用TLS客户端hello中的server_name信息多路复用目标)并终止于目标服务器。
这可以用nginx来完成吗? 如果没有,您是否了解其他可以执行此操作的代理软件?
最诚挚的问候,
rkpr
答案 0 :(得分:3)
似乎haproxy可以做到这样:
use-server srv1 if { req_ssl_sni -i hostname1 } server srv1 192.168.0.1:443 weight 0