web-dev-qa-db-ja.com

Nginxリバースプロキシエラー:14077438:SSLSSL_do_handshake()が失敗しました

したがって、次の設定を使用して、以下のようにサイトの1つのリバースプロキシを作成しています。

  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 GATE WAY502エラー以下が発生するのはログです。

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"

どんな助けでも大歓迎です。

6
Muaaz Rafi

Nginx 1.9.0でまったく同じエラーが表示され、SNIを使用するHTTPSエンドポイントが原因であるように見えます。

これをプロキシの場所に追加すると、修正されました。

proxy_ssl_server_name on;

15
Gunchars

構成にはいくつかの奇妙な点があります。まず、何にプロキシしますか?アプリを提供するポート443でリッスンしているサーバー名mysiter.comの別のサーバーブロックがありますか?はいの場合、ここで必要なのは443ブロックへの301リダイレクトです。そうでない場合、プロキシは同じロケーションブロックに到達し、ループを形成します(別のポートを指定していないため)。

投稿したエラーは、アップストリームにSSLをオフロードするための証明書がないためです。これを解決するには、proxy_passディレクティブをプレーンHTTPに変更する必要があります。

proxy_pass  http://mysiter.com/;

または、バックエンドサーバーが使用する証明書を提供する必要があります。

詳細については、 docs を確認してください。 このブログ も役立つかもしれません。

2
Keenan Lawrence