需求:
nginx根据SNI进行分流(仅作转发,无需在nginx上部署证书)
nginx部分:nginx需要包含stream模块(现在较新的系统发行版的包管理器上的nginx一般都自带),若是编译方法安装,需要加入--with-stream
编译选项(可能需要--with-stream_ssl_module
选项)
配置:
# stream模块设置
stream {
resolver 127.0.0.1 valid=60s;
# SNI识别,将域名映射成配置名
map $ssl_preread_server_name $stream_map {
example1.com backend1;
example2.com backend2;
# 不在上述SNI时默认配置
default default_backend;
}
# upstream配置
upstream backend1 {
server 10.0.0.1:443;
}
upstream backend2 {
server 10.0.0.2:443;
}
upstream default_backend {
server 10.0.0.99:443;
}
# stream模块监听服务器公网443端口
server {
listen 443 reuseport;
listen [::]:443 reuseport;
# resolver 127.0.0.1 valid=60s;
# 开启ssl预读
ssl_preread on;
# proxy_buffer_size 128k;
proxy_pass $stream_map;
}
}
Views: 44