如何定义哪个SSL证书nginx先发送SNI?

在Debian Squeeze上,我使用nginx 1.2.7和OpenSSL 0.9.8o共30个域名。 在其中两个我启用了SSL,这两个工作正常。

SSLconfiguration用于两个域:

listen 443 ssl; ssl_certificate /etc/nginx/ssl/example.org-unified.crt; ssl_certificate_key /etc/nginx/ssl/example.org.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; add_header Strict-Transport-Security max-age=600000; 

使用ssllabs.com检查器检查两个域我得到一个域的通知“这个网站只适用于具有SNI支持的浏览器”。 对于其他域我没有得到这个消息。 似乎nginx默认情况下将按字母顺序排列的第一个域的证书发送给没有SNI支持的客户端。 我可以改变这种行为吗?

换句话说:我想configurationnginx使一个具有SSL的特定域,即使对于没有SNI支持的客户端也是如此。 其他域也应该与SSL一起工作,但是如果它仅适用于启用了SNI的客户端,则可以。

谢谢!

listen指令的default_server设置应该确定在握手中没有设置SNI的请求发送了哪个证书。 更改所需默认值的listen指令:

 listen 443 default_server ssl;