HAProxy修改报文首部

HAProxy修改报文首部

HAProxy可以对请求或响应报文的首部进行修改,从而对用户增加或隐藏部分首部信息

在响应报文或请求报文中添加内容

# 在请求报文尾部添加指定的报文
reqadd <string> [{if|unless} <cond>]
# 在响应报文尾部添加指定的报文
rspadd <string> [{if|unless} <cond>]

示例:
在响应报文的尾部添加经过haproxy服务器

listen web
 bind 172.20.27.20:80
 mode http                  #修改报文首部的前提是工作在http模式下
 rspadd x-via:\ haproxy     #响应首部中要添加的内容
 cookie SERVER-COOKIE insert indirect nocache
 option forwardfor
 server web1 192.168.27.21:80 cookie web1 check inter 3000 fall 3 rise 5
 server web2 192.168.27.22:80 cookie web2 check inter 3000 fall 3 rise 5

测试
访问 172.20.27.20

[[email protected] ~]# curl -I 172.20.27.20
HTTP/1.1 200 OK
Server: nginx/1.17.0
Date: Wed, 05 Jun 2019 12:20:19 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 04 Jun 2019 07:35:24 GMT
ETag: "5cf61f3c-264"
Accept-Ranges: bytes
x-via: haproxy              #响应报文投不中出现所添加的内容
Set-Cookie: SERVER-COOKIE=web2; path=/
Cache-control: private

从响应报文或请求报文中删除匹配正则表达式的首部

# 从请求报文中删除匹配正则表达式的首部
reqdel <search> [{if|unless} <cond>]
reqidel <search> [{if|unless} <cond>]
# 从响应报文中删除匹配正则表达式的首部
rspdel <search> [{if|unless} <cond>]
rspidel <search> [{if|unless} <cond>]

示例:
删除响应头信息
未删除前

[[email protected] ~]# curl -I 172.20.27.20
HTTP/1.1 200 OK
Server: nginx/1.17.0            #显示了后端server的信息
Date: Wed, 05 Jun 2019 12:20:19 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 04 Jun 2019 07:35:24 GMT
ETag: "5cf61f3c-264"
Accept-Ranges: bytes
x-via: haproxy
Set-Cookie: SERVER-COOKIE=web2; path=/
Cache-control: private

修改配置文件

listen web
 bind 172.20.27.20:80
 mode http
 rspadd x-via:\ haproxy
 rspdel Server:.*       #对要删除的头部进行正则表达式匹配
 cookie SERVER-COOKIE insert indirect nocache
 option forwardfor
 server web1 192.168.27.21:80 cookie web1 check inter 3000 fall 3 rise 5
 server web2 192.168.27.22:80 cookie web2 check inter 3000 fall 3 rise 5

测试

[[email protected] ~]# curl -I 172.20.27.20
HTTP/1.1 200 OK
Date: Wed, 05 Jun 2019 12:38:56 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 04 Jun 2019 07:35:24 GMT
ETag: "5cf61f3c-264"
Accept-Ranges: bytes
x-via: haproxy
Set-Cookie: SERVER-COOKIE=web2; path=/
Cache-control: private

原文地址:https://blog.51cto.com/11886307/2406605

时间: 2024-10-09 21:20:02

HAProxy修改报文首部的相关文章

前端学HTTP之报文首部

前面的话 首部和方法配合工作,共同决定了客户端和服务器能做什么事情.在请求和响应报文中都可以用首部来提供信息,有些首部是某种报文专用的,有些首部则更通用一些.本文将详细介绍HTTP报文中的首部 结构 HTTP首部字段是构成HTTP报文的要素之一.在客户端与服务器之间以HTTP协议进行通信的过程中,无论是请求还是响应都会使用首部字段,它能起到传递额外重要信息的作用.使用首部字段是为了给浏览器和服务器提供报文主体大小.所使用的语言.认证信息等内容 HTTP首部字段是由首部字段名和字段值构成的,中间用

HTTP协议图--HTTP 报文首部之首部字段(重点分析)

1.首部字段概述 先来回顾一下首部字段在报文的位置,HTTP 报文包含报文首部和报文主体,报文首部包含请求行(或状态行)和首部字段. 在报文众多的字段当中,HTTP 首部字段包含的信息最为丰富.首部字段同时存在于请求和响应报文内,并涵盖 HTTP 报文相关的内容信息.使用首部字段是为了给客服端和服务器端提供报文主体大小.所使用的语言.认证信息等内容. 2.首部字段结构 HTTP 首部字段是由首部字段名和字段值构成的,中间用冒号":"分隔. 另外,字段值对应单个 HTTP 首部字段可以有

简述HTTP协议报文首部缓存机制

http缓存原理与机制 强制缓存机制(过期时间机制):基本原理:在客户端第一次请求服务端时,服务端会将缓存规则信息添加在header中,客户端会通过这些信息判断是否能缓存.若是强制缓存,则header中会有两个字段来标记缓存失效的时间(expires或cache-control),要指出的是在HTTP1.0中,只支持expires,目前的浏览器默认都是HTTP1.1了,基本都支持cache-control.在客户端第一次请求并添加缓存后,以后每次客户端的请求响应数据都是缓存服务器提供的,不会再经

http协议进阶(三)补充:报文首部

一直纠结要不要把关于首部的内容放到上一篇随笔中,毕竟报文中首部内容还是很重要的,之前也介绍过,犹豫良久,觉得写一个补充吧,原谅我有点强迫症...... 之前写的关于报文首部的传送门: 报文首部:http://www.cnblogs.com/imyalost/p/5708445.html 通用首部字段:http://www.cnblogs.com/imyalost/p/5717430.html 请求首部字段:http://www.cnblogs.com/imyalost/p/5726556.htm

TCP连接之报文首部

在面试时,会经常被问到TCP报文的一些细节,可以说TCP报文是不少企业用来考察面试者对网络的掌握程度的一道题目. TCP连接作为网络传输的一个环节,是不可或缺的一部分.例如,OSI七层模型的应用层HTTP就是基于TCP连接实现的. TCP连接的三次握手和四次挥手机制相信是每个后台开发人员耳熟能详的知识点,那么关于TCP的报文细节以及背后的原理是怎么样的呢?TCP是怎样借助报文来实现三次握手和四次挥手呢?笔者通过阅读书本和加上自己的理解.通过本文,来谈谈TCP报文首部以及报文首部背后的原理. 首先

TCP之报文首部格式

TCP虽然是面向字节流的,但TCP传输的数据单元却是报文段: 一个TCP报文段分为数据和首部两部分,而TCP的全部功能都体现在它首部中各字段的作用: TCP报文段首部前20个字节是固定的,后面有4n个字节是根据需要而增加的选项(n是整数).因此TCP首部的最小长度是20个字节. TCP首部中各字段的含义如下: 源端口和目的端口:各占2个字节.端口是传输层和应用层的服务接口.传输层的复用和分用功能都有要通过端口才能实现. 序号:占4个字节,序号范围是(0,2^32 - 1),共2^32(即4294

TCP三次握手及TCP连接状态 TCP报文首部格式

建立TCP连接时的TCP三次握手和断开TCP连接时的4次挥手整体过程如下图: 开个玩笑 ACK: TCP协议规定,只有ACK=1时有效,连接建立后所有发送的报文ACK必须为1 SYN(SYNchronization同步):在连接建立用来同步序号.当SYN=1而ACK=0时,表明这是一个连接请求报文.对方若同意建立连接,则应在响应报文中使用SYN=1 ACK=1因此,SYN置1表示这是一个连接请求或连接接受报文 FIN(FINIS)即完,终结的意思,用来释放一个连接.当FIN=1时,表明此报文段发

浏览器下载图片的方法,修改报文来实现。

public class DownloadTest : IHttpHandler { public void ProcessRequest(HttpContext context) { string f1 = context.Request["f1"];//文件流 //指定为下载操作 context.Response.ContentType = "application/octet-stream"; //附加头信息,表示保存文件时的文件名 context.Respo

HAProxy 之 概念和配置介绍

本文索引 1  概述 2  HAProxy功能 3  HAProxy组成 4  相关配置 4.1  global配置 4.2  绑定监听端口配置 4.3  定义后端主机的各服务器及其选项 4.4  compression设置 4.5  健康状态检测 4.6  cookie配置 4.7  工作模式 4.8  错误页配置 4.9  修改报文首部 4.10 连接超时 1  概述 HAProxy:是法国人Willy Tarreau开发的一个开源软件,是一款应对客户端10000以上的同时连接的高性能的TC