⑩.IP地址透传

七层负载地址透传

  • haproxy是一个反向代理 发往服务器的请求中的客户端IP均为Haproxy主机的IP地址 而非真正的客户端地址 这会是服务器端的日志信息记录不了真实的IP X-Forwarded-For 首部则可用于解决此问题
  • Haproxy可以向每个发往服务器的请求上添加此X-Forwarded-For首部,并以客户端IP为value
  • option forwardfor语法:option forwardfor [ except ] [header ] [if-none ]
    1.: 可选参数,当指定时,源地址为匹配至此网络中的请求都禁用此功能
    2.: 可选参数,可自定义一个首部,如X-client来替代X-Forwarded-For
    3.if-none: 仅在此首部不存在时,才将其添加至请求报文中
  • option forwardfor示例:
defaults
      option forwardfor    #此为默认值,首部字段为 X-Forwarded-For

nginx定义log的格式

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                         '$status $body_bytes_sent "$http_referer" '
                         '"$http_user_agent" "$http_x_forwarded_for"';

四层负载地址透传

1.配置Haproxy基于TCP协议访问

frontend  app_frontend
        bind *:80
        default_backend app

backend app
    balance     roundrobin
    mode tcp
    server  app1 192.168.1.254:80 check   send-proxy  #将proxy protocol协议发送到后端节点

2.配置后端web节点
日志

#nginx配置  变量$proxy_protocol_addr  记录传床过来客户端真实IP
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                         '"$http_user_agent" "$proxy_protocol_addr"';

nginx配置

server {
	listen 80 proxy_protocol;   #启动此项 将无法直接访问此网站  只能通过四层代理访问   client --> proxy-L4 -->web
	root /var/www/html;
	index index.html;
        access_log /var/log/80_access.log main;
	server_name _;
	location / {
		try_files $uri $uri/ =404;
	}
}
posted @ 2022-07-26 14:45  老夫聊发少年狂88  阅读(325)  评论(0编辑  收藏  举报