haproxy转发真实IP给web

1.在haproxy.cfg中加入下面参数。

option forwardfor               #如果后端服务器需要获得客户端真实ip需要配置的参数,必须要放在listen模块下

2.如果是apache,则加入下面参数(即修改)

LogFormat  “\”%{X-Forwarded-For}i\”%l %t \"%r\" %>s %b \"%{Referer}i\"\"%{User-Agent}i\"" combined 主要是“\”%{X-Forwarded-For}i\ 这个参数可以记录IP

这里我们可以写成这样方便切割日志 LogFormat  “%{X-Forwarded-For}i %l %t \"%r\" %>s %b \"%{Referer}i\"\"%{User-Agent}i\"" combined 注意空格之类的,可以直接复制

3.如果是后端web是nginx则加入下面参数

set_real_ip_from ip;(这个ip填写的是proxy的ip)

real_ip_header X-Forwarded-For;

log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘

          ‘$status $body_bytes_sent “$http_referer” ‘

          ‘”$http_user_agent” “$http_x_forwarded_for”‘

=============================================  (后面日志路径也要定义main 和Apache一样,属于一种日志格式)

在log_format里添加$remote_addr或者$http_x_forwarded_for参数。

时间: 2024-10-06 01:18:55

haproxy转发真实IP给web的相关文章

Java Web 获取客户端真实IP

Java Web 获取客户端真实IP 发生的场景:服务器端接收客户端请求的时候,一般需要进行签名验证,客户端IP限定等情况,在进行客户端IP限定的时候,需要首先获取该真实的IP.一般分为两种情况: 方式一.客户端未经过代理,直接访问服务器端(nginx,squid,haproxy): 方式二.客户端通过多级代理,最终到达服务器端(nginx,squid,haproxy): 客户端请求信息都包含在HttpServletRequest中,可以通过方法getRemoteAddr()获得该客户端IP.此

nginx 获取源IP 获取经过N层Nginx转发的访问来源真实IP

1. nginx 配置文件中获取源IP的配置项 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; #一般的web服务器用这个 X-Real-IP 来获取源IP proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; #如果nginx 服务器是作为反向代理服务器的,则这个配置项是必须的:否则看不到源IP 2. nginx 代理服务器的模块ngi

阿里云X-Forwarded-For 发现tomcat记录的日志全部来自于SLB转发的IP地址,不能获取到请求的真实IP。

1.背景:阿里云的SLB的负载均衡,在tomcat中获取不到真实IP,而是阿里的内网IP,SLB中俩台或者3台本身是局域网,这里是SLB原理,可以看看,没怎么看懂,呵呵,要细细读下. 2.需要开启tomcat的X-Forwarded-For,在tomcat/conf/server.xml中有一个如下的AccessLogValve 日志纪录功能,当配置中的pattern=common时,对应的日志是如下,无论正常请求和非法请求都会记录. <Valve className="org.apach

Haproxy 让后端RS记录真实IP

#让RS记录客户端的真实IP #1.先在haproxy.cfg中加入下面参数. listen www ... option forwardfor                #如果后端服务器需要获得客户端真实ip需要配置的参数,必须要放在listen模块下 #2.如果是apache,则加入下面参数 LogFormat  "\"%{X-Forwarded-For}i\"%l %t \"%r\" %>s %b \"%{Referer}i\&q

解决haproxy代理nginx获取客户端真实ip问题

问题背景: 我们公司之前由于DDOS攻击导致网络出口受影响,经过了解,流量进入亚马逊是不收钱的,而且不限流量,为了加强防范网络攻击对业务造成影响,在亚马逊部署一套haproxy代理,把部分业务迁移试用. 为了使用nginx能获取到客户端的ip地址,在haproxy中配置option httpclose和option forwardfor,nginx配置set_real_ip_from x.x.x.x;和real_ip_header X-Forwarded-For;(其中x.x.x.x是hapro

阿里云X-Forwarded-For 发现tomcat记录的日志所有来自于SLB转发的IP地址,不能获取到请求的真实IP。

1.背景:阿里云的SLB的负载均衡,在tomcat中获取不到真实IP,而是阿里的内网IP,SLB中俩台或者3台本身是局域网,这里是SLB原理,能够看看.没怎么看懂.呵呵,要细细读下. 2.须要开启tomcat的X-Forwarded-For,在tomcat/conf/server.xml中有一个例如以下的AccessLogValve 日志纪录功能.当配置中的pattern=common时.相应的日志是例如以下,不管正常请求和非法请求都会记录. <Valve className="org.a

天翼云增强型弹性负载均衡ELB转发流量至nginx后无法获取客户端真实ip

如何获取来访者的真实IP? 1.nginx需要安装http_realip_module模块 wget http://nginx.org/download/nginx-1.17.0.tar.gz tar zxvf nginx-1.17.0.tar.gz cd nginx-1.17.0 ./configure --user=www --group=www --prefix=/path/server/nginx --with-http_stub_status_module --without-http

php获取用户真实IP和防刷机制

一. 如何获取用户IP地址 public static function getClientIp() { if (getenv('HTTP_CLIENT_IP')) { $ip = getenv('HTTP_CLIENT_IP'); } if (getenv('HTTP_X_REAL_IP')) { $ip = getenv('HTTP_X_REAL_IP'); } elseif (getenv('HTTP_X_FORWARDED_FOR')) { $ip = getenv('HTTP_X_FO

使用Nginx自带的Realip模块获取用户真实IP

(一)简要说明 如果你的Web服务器前端有代理服务器或CDN时日志中的$remote_addr可能就不是客户端的真实IP了.比较常用的解决方法有以下三几种,本文将主要介绍如何使用Nginx自带realip模块来解决这一问题 : 1,用CDN自定义IP头来获取 2,通过HTTP_X_FORWARDED_FOR获取IP地址 3,使用Nginx自带模块realip获取用户IP地址 ngx_realip模块究竟有什么实际用途呢?为什么我们需要去改写请求的来源地址呢?答案是:当Nginx处理的请求经过了某