haproxy IP透传

本文详细介绍了在四层和七层负载均衡下,如何通过HAProxy和Nginx实现IP透传,以记录客户端真实IP地址。四层IP透传涉及send-proxy参数配置,七层IP透传则利用option forwardfor选项。配置完成后,通过日志格式设置,可以在web服务器日志中查看到客户端的IP信息,适用于访问统计、安全防护等多种场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、IP透传

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

1.1 四层IP透传

1.1.1 HAProxy配置
##server配置 send-proxy参数
listen web_80
        bind 10.10.100.101:80
        mode tcp
        balance roundrobin
        server web01 10.10.100.102:80 send-proxy weight 1 check inter 3000 fall 3 rise 5

1.1.2 Nginx配置
#日志添加"$proxy_protocol_addr"配置
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" "$proxy_protocol_addr"';

    server {
    	## 添加proxy_protocol参数
        listen       80 proxy_protocol;
        server_name  10.10.100.102;


        location / {
            root   /apps/nginx/html;
            index  index.html index.htm;
        }
	}
1.1.3 访问日志

在这里插入图片描述

1.2 七层IP透传

1.2.1 HAProxy 配置:

haproxy 配置:
defaults
option forwardfor
或者: option forwardfor header X-Forwarded-xxx
#自定义传递IP参数,后端web服务器写X-Forwarded-xxx,如果写option forwardfor则后端服务器web格式为X-Forwarded-For

示例:

listen web_80
        bind 10.10.100.101:80
        mode http
        option forwardfor 
		balance roundrobin
        server web01 10.10.100.102:80  weight 1 check inter 3000 fall 3 rise 5

1.2.2 web服务器日志格式配置

配置web服务器,记录负载均衡透传的客户端IP地址

#apache 配置
LogFormat "%{X-Forwarded-For}i %a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{UserAgent}i\"" combined 

#tomcat 配置
pattern='%{X-Forwarded-For}i %l %T %t "%r" %s %b "%{User-Agent}i"'/> 

#nginx 日志格式
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" ';

1.2.3 访问日志

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值