web-dev-qa-db-ja.com

nginx:SSL接続を別のサーバーに転送します

リクエストのルーティング先となる着信サーバー名を決定するマスターnginxサーバーがあります。 2つのセカンダリサーバーの場合、このマスターnginxサーバーはSSL証明書とキーも保持しています。 3番目のサーバーは、頻繁に更新プロセスが行われるため、独自の証明書とキーを保持しています。

私の質問は、マスターnginxサーバーを構成して、このサーバーに着信するすべての要求をサーバー3に転送する方法です。証明書とキーは頻繁に変更されるため、サーバー3からマスターサーバーにコピーできません。

overview servers and http(s) connections

8
J J

Httpトラフィックの代わりにtcpトラフィックをプロキシしてみてください

stream {
    server {
        listen SRC_IP:SRC_PORT;
        proxy_pass DST_IP:DST_PORT;
   }
}

詳細については、nginxのドキュメントを参照してください https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/

3
Mahmoud Eltayeb

動作する可能性のある構成は次のとおりです。マスターを介してプロキシし、すべてをServer3に転送します。 sslポートを使用しますが、sslをオフにします。

server {
    listen      443;
    server_name  myserver.mydomain.whatever;

    ssl         off;

    access_log      /var/log/nginx/myserver.access.log;
    error_log       /var/log/nginx/myserver.error.og;

    keepalive_timeout   60;

    location / {
        set $fixed_destination $http_destination;
        if ( $http_destination ~* ^https(.*)$ )
        {
            set $fixed_destination http$1;
        }

        proxy_set_header        Host $Host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;
        proxy_set_header    Destination $fixed_destination;
        # Fix the “It appears that your reverse proxy set up is broken" error.
        # might need to explicity set https://localip:port
        proxy_pass          $fixed_destination;
        # force timeout if backend died.
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_read_timeout  90;
        proxy_redirect http:// https://;
    }
}
2
wolfhammer