由于互联网相关上相关资料较为零散,本文进行一个常用场景的使用总结
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; } }
|