web-dev-qa-db-ja.com

NginxをHTTPSリバースプロキシとして使用する

Nginxサーバーをセットアップして、Tomcat Webサービス(アクセス権がない)をリバースプロキシしようとしています。これは基本的に、TomcatサーバーがTLSv1.0を実行しているため、バージョンを上げようとしています。

しかし、プロキシにアクセスしようとすると、502エラーが発生します。 Ngnixログに-SSL_do_handshake() failed (SSL: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol) while SSL handshaking to upstreamと表示されます。

これが私のNginx設定です-

ssl_certificate  /etc/nginx/certs/public.pem;
ssl_certificate_key  /etc/nginx/certs/private.key;
ssl_session_timeout  5m;
ssl_prefer_server_ciphers  on;
ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers  AES256+EECDH:AES256+EDH:!aNULL;

server {
    listen 6003;
    server_name example.com;
    ssl on;
    location / {
        proxy_pass https://example.com:6003;
    }
}

Apacheでも同じことを試しましたが、まったく同じエラーが表示されます。誰かアイデアはありますか?

2
Chris Edgington

これは アップストリームSSLを使用したリバースプロキシとしてのnginx に対する同様の回答です。アップストリームプロキシの受け入れ可能なプロトコルを設定するために、個別の ssl設定 があります。

...

server {

    listen 6003;
    server_name example.com;
    ssl on;
    ssl_certificate  /etc/nginx/certs/example.pem;
    ssl_certificate_key  /etc/nginx/certs/private.key;
    ... other settings

    location / {
        proxy_pass https://example.com:6003;
        proxy_ssl_trusted_certificate /etc/nginx/certs/example.pem;
        proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    }
}

proxy_ssl_protocolsにリストされている3つの値は現在のデフォルトセットですが、TLSv1とTLSv1.1を削除するために将来のリリースで変更される可能性があります。

1