- 7层代理会对报文进行重新封装,封装过程中可以通过增加XFF的header传递客户端IP。
- 4层转发不会修改报文。在不修改HTTP报文前提下,前置补充代理信息, 格式: PROXY TCP 客户端IP 代理端IP 客户端端口 代理端端口。
nginx 七层代理配置:
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://192.168.1.100:8000/;
# proxy_set_header X-Forwarded-For $remote_addr; # nginx 去掉注释请求携带客户端真实IP
}
}
haproxy七层代理配置:
defaults
mode http
option forwardfor except 127.0.0.0/8 # 默认携带客户端IP,
frontend main *:80
default_backend app
backend app
balance roundrobin
server app1 192.168.1.100:5001 check
nginx 四层配置
haproxy四层配置
NGINX-HTTP服务器
http {
# r:访问IP, 也就是代理端IP。
# P: PROXY-PROTOCOL的IP,也就是4层转发携带的补充报文的IP,也就是客户端IP。
# xff: 藏在Header中的X-Forwarded-For的IP。
log_format proxy_protocol_log 'r: $remote_addr p: $proxy_protocol_addr xff: $http_x_forwarded_for';
server {
access_log logs/proxy_protocol_access.log proxy_protocol_log; # 观察IP: 访问IP,代理IP,XFF
error_log logs/proxy_protocol_error.log
listen 80 ; # 接收HTTP报文走80端口
listen 8000 proxy_protocol; # PROXY PROTOCOL 走8000端口,PROTOCOL 是通过四层转发获取真实IP的补充协议
server_name localhost;
location / {
root html;
index index.html;
}
}
}
参考:https://blog.csdn.net/xq123joes/article/details/140179423