Traffic Server正向代理反向代理配置

本文详细介绍了反向代理配置中的关键参数,包括反向代理启用、URL重映射及原始主机头保持等设置的作用和影响,并通过具体示例展示了不同配置下的请求处理流程。
CONFIG proxy.config.reverse_proxy.enabled INT 1
CONFIG proxy.config.url_remap.remap_required INT 1
CONFIG proxy.config.url_remap.pristine_host_hdr INT 1

即为 反向代理的标准配置 本机ip是10.10.110.35 开放的端口是8080

再看一下我的remap.config文件

regex_map http://(.*)/ http://www.baidu.com/
#regex_map http://(.*)/ http://10.10.110.40:8081/


在10.10.110.40上请求10.10.110.35上的ats

curl -vx 10.10.110.35:8080 www.baidu.com     可以获取结果
curl -vx 10.10.110.35:8080 www.baidu.com/s?wd=linux    同上
curl -vx 10.10.110.35:8080 www.ifeng.com     获取不到结果 因为regex_map把请求的域名www.ifeng.com 解析成百度的ip 从而将http包发送给百度的ip 明显得不到结果
注意此http包里的host首部是www.ifeng.com 


若把remap.config文件改为

#regex_map http://(.*)/ http://www.baidu.com/
regex_map http://(.*)/ http://10.10.110.40:8081/

说明一下10.10.110.40下有一台代理服务器 端口是8081
同样在10.10.110.40上请求
curl -vx 10.10.110.35:8080 www.baidu.com 可以获取结果
curl -vx 10.10.110.35:8080 www.baidu.com/s?wd=linux 同上
curl -vx 10.10.110.35:8080 www.ifeng.com 同上

现修改pristine为0其它两个配置为1 即
CONFIG proxy.config.url_remap.pristine_host_hdr INT 0
remap.config不变化
再次请求

curl -vx 10.10.110.35:8080 www.baidu.com/s?wd=linux 得不到结果
抓包分析

C...C...GET HTTP://www.baidu.com/s?wd=linux HTTP/1.1
User-Agent: curl/7.29.0
Host: www.baidu.com
Accept: */*
Proxy-Connection: Keep-Alive
C...C...GET s?/wd=linux HTTP/1.1
User-Agent: curl/7.29.0
Host: 10.10.110.40:8081
Accept: */*
Proxy-Connection: Keep-Alive
明显Host被替换掉了 所以得不到结果

现在设置remap为0 其它两个选项为1
CONFIG proxy.config.url_remap.remap_required INT 0
不啰嗦了直接上结论:

remap为1 则必须走remap.config 即必须过滤remap.config

remap为0 只要remap.config里面有规则就走规则

对线上跑的ats而言:

ats属于最后一级 是要去源站获取资源的 所以根本不需要把请求 转发给remap后的一个具体的域名的ip

再有一个高并发时过滤规则很耗时间的 所以不开启remap 所以remap.config里也不需要些任何规则

同时得到的结论是 反向代理 是将把用户的请求进行remap转发 从而实现负载均衡

而pristine 即是否保持原来的host

反向代理就是转发 根据remap规则 并不是所有的请求都会转发

正向代理就是可以转发所有的请求 不会有任何限制

所以线上的配置 reverse 为1 pristine 为1 remap为0(remap.config中无任何规则) 也可以做缓存


当设置为正向代理时

无论remap设置是否为1 remap.config中只要有规则 请求都将根据规则过滤 

若没有规则 则走源站

所以线上的配置是 三者都为0


总结:

remap是否设置为1 根据是否设置成反向代理有不同的表现:

反向代理情况下: remap设置为1 则有规则则过滤规则 若没有规则则无法请求

正向代理情况下:remap设置为1 则有规则则过滤规则 无规则则回源站

所以有两种配置方案请求源站

reverse 1 remap 0(并且配置中必须无任何规则)

reverse 0 remap 0 (并且配置中必须无任何规则)

还有一点就是 prisitine是在remap有效的时候才起作用 如果remap无效

即使pristine设置为1  这样请求

curl -v 'http://10.10.110.35:8080/www.baidu.com/s?wd=linux' 得到的host仍为www.baidu.com

 


参考1 https://docs.trafficserver.apache.org/en/latest/admin-guide/configuration/transparent-forward-proxying.en.html#forward-proxy

参考2 https://docs.trafficserver.apache.org/en/latest/getting-started/index.en.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值