nginxでproxy_pass先にSNIなhttpsを指定する

  • 15
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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;
}