Can nginx do TCP load balance with SSL termination

后端 未结 1 790
半阙折子戏
半阙折子戏 2021-02-10 09:37

Due to some reason, I need to set up nginx tcp load balance, but with ssl termination. I am not sure whether Nginx can do this. Since tcp is layer 4, ssl is layer 5, SSL pass-th

相关标签:
1条回答
  • 2021-02-10 09:53

    Nginx can act as L3/4 balancer with stream module: https://www.nginx.com/resources/admin-guide/tcp-load-balancing/

    Because SSL still tcp - Nginx can proxy SSL traffic without termination.

    Also stream module can terminate SSL traffic, but it's optional.

    Example 1: TCP tunnel for IMAP over SSL without SSL termination

    stream {
        upstream stream_backend {
            server backend1.example.com:993;
            server backend2.example.com:993;
        }
        server {
            listen 993;
            proxy_pass stream_backend;
        }
    }
    

    In this case, SSL termination processed by backend1/2.

    Example 2: TCP tunnel for IMAP with SSL termination.

    stream {
        upstream stream_backend {
            server backend1.example.com:443;
            server backend2.example.com:443;
        }
        server {
            listen 993 ssl;
            proxy_pass stream_backend;
            ssl_certificate        /etc/ssl/certs/server.crt;
            ssl_certificate_key    /etc/ssl/certs/server.key;
        }
    }
    

    In this case traffic between nginx and backend1/2 unencrypted (IMAP 443 port used).

    Example 3: Receive unencrypted and encrypt it

    stream {
        upstream stream_backend {
            server backend1.example.com:993;
            server backend2.example.com:993;
        }
        server {
            listen 443;
            proxy_pass stream_backend;
            proxy_ssl  on;
            proxy_ssl_certificate     /etc/ssl/certs/backend.crt;
            proxy_ssl_certificate_key /etc/ssl/certs/backend.key;
        }
    }
    

    So, clients connect to our nginx without SSL and this traffic proxed to backend1/2 using SSL encryption.

    0 讨论(0)
提交回复
热议问题