我需要通过https服务几个应用程序使用一个外部IP地址。
SSL证书不应该在反向代理上进行pipe理。 它们安装在应用程序服务器上。
反向代理可以configuration为使用SNI并在端点传递ssl来终止?
这可能使用像Nginx或Apache的东西? 什么configuration看起来像?
这是可能的Haproxy。 您可以设置TCP代理并提取SNI并根据SNI进行路由。 这是一个例子:
backend be.app1 mode tcp no option checkcache no option httpclose tcp-request inspect-delay 5s tcp-request content accept if { req.ssl_hello_type 1 } tcp-request content reject use-server server1 if { req.ssl_sni -m beg app1. } server server1 server1:8443 check id 1 weight 0
延迟请求至关重要,直到获得SSL hello,否则haproxy将在收到SNI头之前尝试build立连接。
我使用权重为0的服务器,因为在我当前的configuration中,我只有一台服务器为每个SNI运行,我不希望它们接收随机请求。 你或许可以find更好的方式来玩这个。
我希望这有帮助。
你可以使用sniproxy: https : //github.com/dlundquist/sniproxy
一个示例configuration:
listener 0.0.0.0:443 { protocol tls table TableHTTPS fallback 127.0.0.1:8443 } listener 0.0.0.0:80 { protocol http table TableHTTP fallback 127.0.0.1:8080 } table TableHTTPS { domain1.com backend1:443 domain2.org backend2:443 } table TableHTTP { domain1.com backend1:80 domain2.org backend2:80 }