Nginx反向代理错误:14077438:SSL SSL_do_handshake()失败

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx反向代理错误:14077438:SSL SSL_do_handshake()失败相关的知识,希望对你有一定的参考价值。

所以我使用以下设置为网站创建一个反向代理,如下所示。

  server {
     listen 80;
     server_name mysite.com;
     access_log  /var/log/nginx/access.log;
     error_log  /var/log/nginx/error.log;
     root /home/ubuntu/p3;
   location / {
     proxy_pass  https://mysiter.com/;
     proxy_redirect  https://mysiter.com/ $host;
     proxy_set_header Accept-Encoding "";
    }
  }

但是得到BAD GATEWAY 502错误以及以下是日志。

2016/08/13 09:42:28 [error] 26809#0: *60 SSL_do_handshake() failed (SSL: error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error) while SSL handshaking to upstream, client: 103.255.5.68, server: mysite.com, request: "GET / HTTP/1.1", upstream: "https://105.27.188.213:443/", host: "mysite.com"
2016/08/13 09:42:28 [error] 26809#0: *60 SSL_do_handshake() failed (SSL: error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error) while SSL handshaking to upstream, client: 103.255.5.68, server: mysite.com, request: "GET / HTTP/1.1", upstream: "https://105.27.188.213:443/", host: "mysite.com"

任何帮助将不胜感激。

答案

在Nginx 1.9.0上看到完全相同的错误,看起来它是由使用SNI的HTTPS端点引起的。

将其添加到代理位置修复它:

proxy_ssl_server_name on;

另一答案

您的配置有几个奇怪之处。首先你代理的是什么?你有另一个服务器块,服务器名称mysiter.com正在侦听端口443,为应用程序提供服务吗?如果是,那么你想要的是301重定向到你的443块。如果没有,那么代理将在相同的位置块中着陆,形成一个循环(因为您没有指定不同的端口)。

您发布的错误是因为您的上游没有证书可以卸载SSL。要解决此问题,您需要将proxy_pass指令更改为纯HTTP。

proxy_pass  http://mysiter.com/;

或者您需要为后端服务器提供证书才能使用。

查看docs了解更多信息。 This blog也可能有用。

以上是关于Nginx反向代理错误:14077438:SSL SSL_do_handshake()失败的主要内容,如果未能解决你的问题,请参考以下文章

带有两种 SSL 到 weblogic 的 nginx 反向代理

nginx 反向代理 google,出现 404,怎么破

Nginx的反向代理及ssl配置

设置好 NGINX 反向代理后,如何在引入 NGINX 反向代理的 NGINX 上配置 SSL 直通? [复制]

Nginx部署SSL证书反向代理

Nginx---反向代理,SSL支持