NGINX缓存代理因SSL23_GET_SERVER_HELLO:sslv3警报握手失败而失败

Moh*_*que 31 proxy caching nginx

充当缓存代理的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,server:localhost,request:"GET /static/images/media-logos/best.png HTTP/1.1",上游:" https:// xxxx:443/static/images/media-logos/best.png " ,

我尝试了不同的代理设置,如proxy_ssl_protocols和proxy_ssl_ciphers,但没有组合工作.

有任何想法吗?

Nik*_*rov 74

我有完全相同的问题,花了几个小时...我猜你使用旧版本的nginx(低于1.7)?在nginx 1.7中,您可以使用此指令:

proxy_ssl_server_name on;
Run Code Online (Sandbox Code Playgroud)

这将强制nginx使用SNI 此外,您应该设置SSL协议:

proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
Run Code Online (Sandbox Code Playgroud)

对于早期版本,您可以使用此修补程序(但我无法验证这是否有效):

http://trac.nginx.org/nginx/ticket/229

  • 你救了我几个小时. (9认同)
  • 我正在使用Cloudflare for HTTPS,它使用SNI.做出这个改变解决了这个问题 - 你是天赐之物,谢谢! (5认同)
  • 非常感谢你为我们的痛苦而痛苦! (3认同)