使用nginx通过4层转发tls流量

分类:笔记 日期:2021-04-02 作者:caocaofff 浏览:55

该方法目前仅适用于中转tls的TCP流量。
服务器443端口链接获取到tls请求的sni值(也就是域名),赋值给$ssl_preread_server_name变量,然后又直接通过TCP转发到$ssl_preread_server_name对于的服务器443端口

stream {
    map $ssl_preread_server_name $targetBackend {
        yourdomian 127.0.0.1:8443;
        default $ssl_preread_server_name:443;
    }

    server {
        listen 443;

        proxy_connect_timeout 10s;
        proxy_timeout 10s;
        resolver 1.1.1.1;

        proxy_pass $targetBackend;
        ssl_preread on;
    }
}

使用场景:
看实际转发的目的服务器,如果是别的机器,隐藏主机真实ip,隐藏主机ip与域名之间的关系,避免被全网扫描探测。当然还能加一些实际的访问限制规则,减少一部分自动探测的攻击等。

即便是转发到本机,也是有同样的防御作用。看具体的设置策略了。

比较常规的使用场景,使用docker部署不同的服务,服务需要对外的443可以映射到127.0.0.1的其他端口,避免这部分端口的直接对外暴露。然后通过4层转发 对不同域名的数据进行分派。

评论 (暂无评论)

发表评论

昵称:  
邮箱:  
网址: