Nginx SNI Proxy

由于互联网相关上相关资料较为零散,本文进行一个常用场景的使用总结

Prepare

ubuntu 可以直接 apt install -y nginx,ALinux 的 yum 上的 nginx 不带有 stream_module,需要自行编译,编译时需要携带 --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module

如果 nginx 为自行编译,nginx.conf head 需要加上

1
load_module /usr/lib/nginx/modules/ngx_stream_module.so;

Usage

any domain(不限制域名,转发所有 request,通常作用为限制网络条件下的网关)

1
2
3
4
5
6
7
8
9
stream {
resolver 127.0.0.1;

server {
listen 443;
proxy_pass $ssl_preread_server_name:443;
ssl_preread on;
}
}

specific domains(限制特定域名)

1
2
3
4
5
6
7
8
9
10
11
12
13
stream {
# ip 处也可填写域名
map $ssl_preread_server_name $target_backend {
example.domain.com ip:443;
}
resolver 127.0.0.1;

server {
listen 443;
proxy_pass $target_backend;
ssl_preread on;
}
}

regexp

1
2
3
4
5
6
7
8
9
10
11
12
13
stream {
# ip 处也可填写域名
map $ssl_preread_server_name $target_backend {
~(.*).domain.com $1.other.com:443;
}
resolver 127.0.0.1;

server {
listen 443;
proxy_pass $target_backend;
ssl_preread on;
}
}

Nginx SNI Proxy
https://hunsh.net/20250422/Nginx-SNI-Proxy/
发布于
2025年4月22日
许可协议