6、Haproxy高级功能
6.8、自定义HTTP报文
6.8.1、reqadd
reqadd [{if | unless} ]在请求报文中添加指定首部
实现原理:client-->haproxy-->reqadd(添加header)-->web
1、在frontend中使用reqadd,将发往后端集群的请求中添加一个header
cat /etc/haproxy/haproxy.cfg
frontend web
bind *:88
mode http
reqadd X-via: Haproxy-Node1
use_backend webcluster
systemctl reload haproxy
2、修改后端nginx.conf中logformat,添加"$http_x_via"
vim /etc/nginx/nginx.conf
http {
...
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$http_x_via"';
...
}
3、观察nginx日志
172.16.1.5 - - [25/Dec/2022:11:18:36] "GET / HTTP/1.1" 200 18 "-" "curl/7.29.0" "Haproxy-Node1"
6.8.2、rspadd
rspadd在返回给客户端响应报文中添加指定首部
实现原理:web-->haproxy-->rsqadd(添加header)-->client
1、在frontend中使用rsqadd,通过在响应Header中添加字段,告诉客户端资源经过了哪个代理服务
cat /etc/haproxy/haproxy.cfg
frontend web
bind *:88
mode http
rsqadd via: Haproxy-1.18
use_backend webcluster
systemctl reload haproxy
2、客户端访问测试,然后检查响应Header
6.8.3、rspdel
删除返回给客户端的Header字段
frontend web
bind *:80
mode http
default_backend webservers
# 自定义添加Header给后端的Nginx节点
http-request add-header X-via Haproxy-Node1
# 自定义添加Header给CLient返回 在浏览器端查看
http-response add-header Res-Server Haproxy2.2-lb
# 删除返回给客户端的Header字段
http-response del-header server
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 五个月,秒杀,38个大的篇章,126+篇文章、视频、小册,150+源码分支,完美收官!
大家好,我是冰河~~ 经过四个多月的坚持,《Seckill秒杀系统》终于接近尾声了,也感谢大家这四个多月以来的坚持和陪伴,也相信大家在《Seckill秒杀系统》专栏中,学到了不少知识和技术。接下来,我们就一起对《Seckill秒杀系统》专栏做个总结。 一、总体…