Nginx 在一个IP上配置多个https server时,默认只会发送默认server name的证书。这是由ssl 协议本身行为导致的:先建立ssl connection,后发送http请求。即nginx 建立ssl connection时是不知道请求的主机名字,因此返回默认server name的证书。
解决方案:
1. 一个https server 一个IP。
2. 启用sni, 此需要浏览器,本机openssl,nginx 同时支持。
编译参数:--enable-tlsext
$ nginx -V ... TLS SNI support enabled ...