充当缓存代理的 NGINX 在通过 HTTPS 从 CloudFront 服务器获取内容时遇到问题:
这是 NGINX 错误日志的摘录:
2014/08/14 16:08:26 [错误] 27534#0: *11560993 SSL_do_handshake() 失败(SSL:错误:14077410:SSL 例程:SSL23_GET_SERVER_HELLO:sslv3 警告握手失败)同时 SSL 与上游握手,客户端:82.33。 49.135,服务器:本地主机,请求:“GET/static/images/media-logos/best.png HTTP/1.1”,上游:“https://x.x.x.x:443/static/images/media-logos/best.png”,
我尝试了不同的代理设置,例如 proxy_ssl_protocols 和 proxy_ssl_ciphers,但没有任何组合有效。
有任何想法吗?
请您参考如下方法:
我遇到了完全相同的问题,花了几个小时......
我猜你使用的是旧版本的 nginx(低于 1.7)?
在 nginx 1.7 中,您可以使用 this directive :
proxy_ssl_server_name on;
这将强制 nginx 使用 SNI
此外,您应该设置 SSL 协议(protocol):
proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
对于早期版本,您可能可以使用此补丁(但我无法验证它是否有效):
http://trac.nginx.org/nginx/ticket/229
2019年更新 :您应该避免使用 TLSv1 和 TLSv1.1,并尽可能禁用它们。我会把它们留在答案中,因为它们对 SNI 仍然有效。