nginxで proxy_pass
する先を SNI ではない HTTPS から SNI な HTTPS (具体的には CloudFront) へ変更したらハマったのでメモ。
こんなログがでて接続できない。
[error] 21711#0: *32897 SSL_do_handshake() failed
(SSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure)
while SSL handshaking to upstream,
client: ****, server: ****, request: "GET / HTTP/1.1",
upstream: "https://****", host: "****"
nginx 1.7.0 以降で proxy 先への SNI 対応が入っているので、proxy_ssl_server_name on
して解決しました。
resolver 127.0.0.1;
set $server "sni.example.com";
location / {
proxy_ssl_server_name on;
proxy_pass https://$server;
}