首页 > 其他分享 >六月学习之Haproxy高级功能(自定义HTTP报文)

六月学习之Haproxy高级功能(自定义HTTP报文)

时间:2023-07-13 21:01:01浏览次数:33  
标签:Haproxy haproxy http 自定义 -- header 添加 HTTP

6、Haproxy高级功能

6.8、自定义HTTP报文

6.8.1、reqadd

reqadd <string> [{if | unless} <crond>]在请求报文中添加指定首部
实现原理: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

六月学习之Haproxy高级功能(自定义HTTP报文)_客户端

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

标签:Haproxy,haproxy,http,自定义,--,header,添加,HTTP
From: https://blog.51cto.com/u_13236892/6716027

相关文章

  • HttpURLConnection绕过SSL验证,信任所有证书的工具类
    HttpURLConnection绕过SSL验证,信任所有证书的工具类发起https请求时经常会出现javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException这样的错误,那是因为环境中没有证书校验,我们可以在连接中设置绕过SSL校验来解决这个问题。publicclassSslUtil{......
  • emoji与自定义表情符号分割问题
    在很多ugc场景中,会有用户发布很多表情......
  • minio 配置https访问
    官网文档:https://docs.min.io/docs/how-to-secure-access-to-minio-server-with-tls.html在${HOME}.minio/certs文件夹下1、生成私钥opensslgenrsa-outprivate.key20482、生成自签名证书创建一个以openssl.conf以下内容命名的文件。设置IP.1和/或DNS.1指向正确的IP/DNS......
  • urllib默认只支持HTTP/HTTPS的GET和POST方法
    URL编码转换:urllib的urlencode()urllib和urllib2都是接受URL请求的相关模块,但是提供了不同的功能。两个最显著的不同如下:urllib模块仅可以接受URL,不能创建设置了headers的Request类实例;但是urllib提供 urlencode 方法用来产生GET查询字符串,而urllib2则没有。(这是urll......
  • HTTP/HTTPS一文搞懂
    HTTP协议(HyperTextTransferProtocol,超文本传输协议):是一种发布和接收HTML页面的方法。HTTPS(HypertextTransferProtocoloverSecureSocketLayer)简单讲是HTTP的安全版,在HTTP下加入SSL层。SSL(SecureSocketsLayer安全套接层)主要用于Web的安全传输协议,在传输层对网络连接进行......
  • HttpServletRequest 流数据不可重复读问题以及解决方案
    1.HttpServletRequest流数据不可重复读的原因HttpServletRequest的request.getInputStream()只可以读取一次参数,由于InputStream这个流数据的特殊性,在Java中读取InputStream数据时,内部是通过一个指针的移动来读取一个一个的字节数据的,当读完一遍后,这个指针并不会res......
  • react-d3-tree自定义节点使用案例
    react-d3-tree主要API及其中文解释:Tree组件的props:这些API提供了丰富的配置选项,可以用来定制树的外观和行为。例如,可以使用nodeSize属性调整节点的大小,使用pathFunc属性绘制自定义的连线,使用onClick属性处理节点的点击事件等等。data:树的数据对象。zoomable:指......
  • IIS Express 无法识别自定义处理程序映射问题
    我的一个项目中,使用了自定义的文件类型(实际上就是普通的html,只不过自定义了后缀,且非静态文件),本地部署在IIS10.0后,添加处理程序映射,指定对应的aspnet_isapi后,访问正常,但代码调试的时候,出现错误。刚开始一直认为时iisexpress未能识别处理程序映射,无论是在项目的applicationhost.c......
  • SpringCloud 之OpenFeign 自定义配置和使用/自定义拦截器
    转:SpringCloud之OpenFeign自定义配置和使用/自定义拦截器   ......
  • APUE-signal-自定义信号
    [Linux定义信号的一些细节处理-自定义信号变量]https://blog.csdn.net/renlonggg/article/details/78309662#defineMY_SINGL_1(SIGRTMIN+1)/*信号函数,发送接受*/voidsignal_handler(intsignalnum){printf("Getsignal%d.\n",signalnum);}voidsigna......