使用nginx反向代理trojan服务(docker部署)搭建教程

之前的文章写的太简略,更新下增加一些解释

第一版描述太难以理解,今天有空就在后面又增加了一个简单易懂版的。

当使用 Nginx 转发 Trojan 流量时,不能直接基于域名在 7 层(应用层)进行代理和转发数据(就是说不能通过配置server_name来转发流量),这是由于 Trojan 的流量是加密的,并且不符合标准的 HTTP 协议,Nginx 无法在 7 层解析和处理这些流量。因此,必须通过 ssl_preread 模块在 4 层进行代理和转发,这样才能根据 SNI 信息(即客户端在 TLS 握手过程中提供的域名)来决定将流量转发到哪个后端服务。

具体原因和方法总结如下:

  1. 4 层代理 vs. 7 层代理

    • 4 层代理(传输层代理):Nginx 只处理 TCP 连接,而不深入解析数据内容。它只能基于 IP、端口和 TCP 连接的基本属性来做转发。
    • 7 层代理(应用层代理):Nginx 能解析和处理 HTTP/HTTPS 请求的内容,如 URL、头信息等。然而,对于 Trojan 这样的加密协议,Nginx 无法在 7 层解析其内容,因此不能在 7 层基于域名转发 Trojan 流量。
  2. ssl_preread 的作用

    • ssl_preread 模块允许 Nginx 在 4 层代理中读取 SSL/TLS 握手的初始数据包,从中提取 SNI 信息(域名)。
    • 通过这个 SNI 信息,Nginx 可以决定将流量转发到哪个后端服务。例如,你可以通过 SNI 信息判断请求的域名是与 Trojan 服务相关的域名,还是与其他网站相关的域名,然后将流量分别转发到对
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值