Nginx 配置多个域名共用 443 端口

Jul 03, 2024 • 预计阅读时间 1 分钟

要求:机器对外暴露一个 443 端口,内部根据不同的域名分别使用不同的 SSL 证书分流。

关键点:在预读取到 SNI 信息的时候,就分流到不同的内部服务上。

服务器上分别有 aaa.com 和 bbb.com 两个网站的证书,配置如下:

stream {
  server {
    listen 127.0.0.1:8443 ssl;
  }

  server {
    listen 127.0.0.1:9443 ssl;
  }

  upstream aaa {
    server 127.0.0.1:8443;
  }

  upstream bbb {
    server 127.0.0.1:8443;
  }

  map $ssl_preread_server_name $name {
    ~*aaa.com$ aaa;
    ~*bbb.com$ bbb;
  }

  server {
    listen 443 ssl;
    ssl_preread on;
    proxy_pass  $name;
  }
}

使用 ~*aaa.com$ 表示匹配域名 aaa.com 及其子域名 *.aaa.com

参考:https://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html

Nginx
版权声明:如果转发请带上本文链接和注明来源。

lvv.me

iOS/macOS Developer

htcp + bbr 榨干 FreeBSD 的带宽

使用 Dropbear 作为 SSH 服务器