首页 > 其他分享 >六月学习之Haproxy高级功能(IP地址透传)

六月学习之Haproxy高级功能(IP地址透传)

时间:2023-07-10 23:07:02浏览次数:39  
标签:Haproxy 首部 透传 proxy IP地址 80 server 客户端

6、Haproxy高级功能

6.5、IP地址透传

web服务器中记录客户端的真实IP地址,主要用于访问统计、安全防护、行为分析、区域排行等场景

6.5.1、七层负载地址透传

Haproxy工作于反向代理模式,其发往服务器的请求中的客户端IP均为Haproxy主机的地址而非真正客户端的地址,这会使得服务器的日志信息记录不了真正的请求来源,X-Forwarded-For首部则可用于解决此问题
Haproxy可以向每个发往服务器的请求上添加此首部,并以客户端IP为其value
option forwardfor语法:option forwardfor [ except <network> ] [ header <name> ] [ if-none ]
<network>:可选参数,当指定时,源地址为匹配至此网络中的请求都禁用此功能
<name>:可选参数,可自定义一个首部,如x-client来代替X-Forwarded-For
if-none:仅在此首部不存在时才将其添加至请求报文中

option forwardfor示例:
vim /etc/haproxy/haproxy.cfg
defaults
    option forwardfor #此为默认值,首部字段默认为:X-Forwarded-For
frontend main
    bind *:80
    mode http
    default_backend app
backend app
    balance roundrobin
    server web1 172.16.1.7:80 check
    server web2 172.16.1.8:80 check

#检查后端nginx日志
172.16.1.5 - - [25/Dec/2022:11:18:36] "GET / HTTP/1.1" 200 18 "-" "curl/7.29.0" "10.0.0.1"

6.5.2、四层负载地址透传

1、配置Haproxy基于TCP协议访问
vim /etc/haproxy/haproxy.cfg
frontend main
    bind *:80
    mode tcp			# tcp
    default_backend app

backend app
    balance roundrobin
    server web1 172.16.1.7:80 check send-proxy  #send-proxy: HA将proxy protocol协议发送到后端节点

2、配置后端web节点
#Nginx配置:变量$proxy_protocol_addr记录透传过来的客户端IP
http {
    log_format main '$remote_addr - $remote_user [$time_local] "$request" "$proxy_protocol_addr"';
    server {
        listen 80 proxy_protocol; #启用此项,将无法直接访问此网站,只能通过四层代理访问
        server_name proxy.qingchen.com;
        location / {
            root /usr/share/nginx/html;
            index index.html;
        }
    }

}

3、检查后端节点日志

标签:Haproxy,首部,透传,proxy,IP地址,80,server,客户端
From: https://blog.51cto.com/u_13236892/6681064

相关文章

  • ubuntu 虚拟机网络无法连接,没有ip地址
    上午虚拟机还是好好的,晚上打开的时候就找不到ip地址了,外网也无法访问,此处应该有。百度一大圈都没有解决,然后看到一个终极解决方案4.使用dhclient以上都不行的话,执行下面的命令。sudodhclientens331原理:重新自动配置IP和路由表。如果查看路由表没有默认网关,或者默认网关不......
  • linux HAproxy
     HAproxy服务可以完成负载均衡,和反向代理,不仅可以完成几十万的高并发请求,而且可以完成保护真实服务器。 目录一、HAProxy概念二、HAProxy主要特性三、HAProxy负载均衡策略四、LVS、nginx和HAProxy区别五、部署HAproxy六、日志分析七、总结        ......
  • 六月学习之Haproxy高级功能(一)
    6、Haproxy高级功能6.1、基于cockie会话保持在backend服务器组启用cookie植入功能haproxy会将后端服务器定义的serverID植入到客户端的cookie中,以保持会话的持久性,需要设置backend中的cookie以及server指定的cookie选项6.1.1、配置示例1、配置haproxy基于cookie实现会话绑定#mai......
  • 六月学习之Haproxy Proxies配置
    5、HaproxyProxies配置代理相关配置frontend<name>:用于定义一系列监听的端口,这些端口可接受客户端请求并与之建立连接backend<name>:用于定义一系列后端服务器,代理将会将对应客户端的请求转发至这些服务器listen<name>:通过关联"前端"和"后端"定义了一个完整的代理5.1、mo......
  • asp.net core如何获取客户端IP地址
    客户端直接访问服务器直接通过HttpContext.Connection.RemoteIpAddress获取客户端Ip[HttpGet][Route("GetClientIP")]publicasyncTask<IActionResult>GetClientIP(){ varip4=HttpContext.Connection.RemoteIpAddress.MapToIPv4(); returnOk(ip4.ToString());}客......
  • 子网掩码和子网掩码划分IP地址
    1.什么是子网掩码,为什么要有子网掩码IP子网划分实际上就是设计子网掩码的过程。由于在五类的IP地址中,网络号与主机号的的位数并不一致,就造成了要么是网络号太多,要么是主机号太多。为了解决这些问题,就需要划分子网。将一个网络划分为子网:采用借位的方式,从主机位最高位开始借位变为......
  • 六月学习之Haproxy default配置
    4、Haproxydefault配置defaults段用于为所有其他配置段提供默认参数4.1、option参数httplogoptionhttplog:用来记录日志,其通常包括但不限于HTTP请求、连接计时器、会话状态、连接数、捕获的首部及cookie、"frontend"、"backend"等信息。dontlognulloptiondontlognull:不记录......
  • vue 插槽透传
    vue2:<templatev-for="(_,name)in$scopedSlots"v-slot:[name]="data"><slot:name="name"v-bind="data"/></template>vue3: <templatev-for="namein$slots":key="nam......
  • ip地址网段和网关地址可以不在同一个平面吗?
    背景工作中经常接触配置ip地址,发现网关的设置总是同网段的第一个或者第二个ip地址,于是就有一个疑问,ip地址的网段和网关地址的网段是否可以不在同一网段,百度搜索答案,有说不可以的,有说可以的,还有高傲的认为这么简单的问题就不要发出来问的。如此,便只能自己实践了。搞个实验环境......
  • C#获取本地IP地址
    publicstaticboolTryGetLocalEndPoint(outIPEndPointipEndPoint){try{stringlocalIP=string.Empty;using(Socketsocket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp)){......