将 NGINX 配置为反向代理(以分派)到已配置 SSL 的后端服务

Configuring NGINX as reverse-proxy (to dispatch) to backend services that are already SSL configured

我有一台物理服务器和一台IP address。在该服务器上,我配置了三个(数量。3)后端服务,每个都有自己的 public DNS 域名每个都有自己的 Let's Encrypt SSL certificates,如图:

 - svc01.example.com:1443  # Own DNS domain-name and SSL certificates.
 - svc02.example.com:2443  # Own DNS domain-name and SSL certificates.
 - svc03.example.com:3443  # Own DNS domain-name and SSL certificates.

它们共存于同一物理服务器上,因此每个都配置为使用自己的 Port;然而 public IP-Addresssvc01|02|03.example.com 是相同的。

请记住,这些后端服务 已经配置了 SSL (而且我无法撤消),我如何配置 NGINX 以实现以下简单的转发(几乎像调度员):

 svc01.example.com:443  --> svc01.example.com:1443
 svc02.example.com:443  --> svc02.example.com:2443
 svc03.example.com:443  --> svc03.example.com:3443

遗憾的是,我不是 NGINX 人,因此非常感谢每个人的完整配置文件:

- svc01_nginx.conf
- svc02_nginx.conf
- scv03_nginx.conf

提前致谢!

感谢@SteffenUllrich在上述评论中提供的提示,解决方案如下所示。我不是 nginx 人,我不确定是否有其他最佳实践可以使此配置更安全或更健壮(免费发表评论),但这是一个开始。

/etc/nginx/nginx.conf:

load_module /usr/lib/nginx/modules/ngx_stream_module.so;
  
events {}

stream {    
  map $ssl_preread_server_name $targetBackend {
    svc01.example.com svc01.example.com:1443
    svc02.example.com svc02.example.com:2443
    svc03.example.com svc03.example.com:3443    
  }

  server {
    listen 8443;    
    # ==============================================================
    # http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html
    # ==============================================================
    proxy_connect_timeout 10s;
    proxy_timeout 600s;
    resolver 8.8.8.8 1.1.1.1 8.8.4.4 1.0.0.1;
    proxy_pass $targetBackend;
    # ==============================================================

    # ==============================================================
    # http://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html
    # ==============================================================
    ssl_preread on;
    # ==============================================================
  }
}

我希望这对其他人有帮助。 (◠﹏◠)