stream{
#这里就是SNI识别,将域名映射成一个配置名
map$ssl_preread_server_name$backend_name{
域名1web;
域名2tcp应用2;
域名3tcp应用3;
#域名都不匹配情况下的默认值
defaultweb;
}
web,配置转发详情
upstreamweb{
server127.0.0.1:10240;
}
#tcp应用2,配置转发详情
upstreamtcp应用2{
server127.0.0.1:10241;
}
#tcp应用3,配置转发详情
upstreamtcp应用3{
server127.0.0.1:10242;
}
#监听
server{
listen80reuseport;
listen[::]:80reuseport;
proxy_pass $backend_name;
}
}
-----------------------------------------------------
网友回复:
在Stream模块中,server_name可以用来允许多个server块监听同一个ip:port。nginx会根据TLS的SNI来决定请求连接匹配到哪个server块。这意味着,Stream模块的server_name必须用在SSL卸载的情况下(即listen指令后面有ssl这个参数)
网友回复:
server监听要开ssl_prereadon;
backend的端口要开启ssl
网友回复:
引用:liuyangge发表于2020-12-1420:23
server监听要开ssl_prereadon;
backend的端口要开启ssl
网友回复:
引用:复世姬凌发表于2020-12-1420:25
不用443端口可以吗,
网友回复:
引用:jiangcuo发表于2020-12-1422:30
不是说了,是ssl吗,你得ssl
网友回复:
引用:zzx396发表于2020-12-1423:11
同问,四层转发我也搞不明白
网友回复:
都用上nginx了,让nginx做tls验证不行么
网友回复:
这个就是通过ssl请求域名判断的,所以一定要ssl请求,web的话就是https