实现透传真实IP地址

环境

10.0.0.1   --> client	ip.qwe.com
10.0.0.5   --> proxy-1
10.0.0.7   --> proxy-2
10.0.0.8   --> web

添加X-Forward-For头字段

proxy-1

[root@lb01 ~]# cat   /etc/nginx/conf.d/proxy_ip.qwe.com.conf
	server {
			listen 80;
			server_name ip.qwe.com;

		location / {
				proxy_pass http://10.0.0.7;
				proxy_set_header Host $http_host;
				proxy_set_header X-Real-IP  $remote_addr;
				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			}
		}

proxy-2

[root@web01 ~]# cat /etc/nginx/conf.d/proxy_ip.qwe.com.conf
	server {
			listen 80;
			server_name ip.qwe.com;

		location / {
				proxy_pass http://10.0.0.8;
				proxy_set_header Host $http_host;
				proxy_set_header X-Real-IP  $remote_addr;
				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			}
		}

web

[root@web02 ~]# cat /etc/nginx/conf.d/ip.qwe.com.conf
	server {
			listen 80;
			server_name ip.qwe.com;
			root  /php;

		location /  {
				index index.php;
				}

		location ~ \.php$ {
				fastcgi_pass 127.0.0.1:9000;
				fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
				include  fastcgi_params;
				}
		}

创建目录、配置
[root@web02 ~]# mkdir /php
[root@web02 ~]# cat /php/index.php
	<?php
		$ip = getenv("HTTP_X_FORWARDED_FOR");
		echo "获取X_FORWARDED_FOR的真实IP地址是: $ip";
	?>





X-Forwarded-For提取真实IP的方式:
优点:一定能提取到真是的IP地址
缺点:必须所有经过的代理服务器都开启X-FORWARDED-FOR变量携带IP至后端

Nginx_RealIP模块

10.0.0.1   --> client	ip.qwe.com

10.0.0.5   --> proxy-1
10.0.0.7   --> proxy-2
10.0.0.8   --> web			#修改他

[root@web02 ~]# cat /etc/nginx/conf.d/ip.qwe.com.conf
server {
listen 80;
server_name ip.qwe.com;
root  /php;

#web前端所有的代理服务器地址,一个都不能少
set_real_ip_from 10.0.0.5;
set_real_ip_from 10.0.0.7;
real_ip_header X-Forwarded-For;	#丛那个header头检索出需要的IP地址 ( 10.0.0.1, 10.0.0.5, 10.0.0.7)
real_ip_recursive on;		#递归排除 set_real_ip_form里面出现的IP地址,剩下没有出现的IP则被认为是真实IP地址
								  # ( 10.0.0.1 ==$remote_addr )

location /  {
	index index.php;
}

location ~ \.php$ {
	fastcgi_pass 127.0.0.1:9000;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	include  fastcgi_params;
	}
}




realip:直接使用就能提取到真实IP,但缺陷是他需要知道沿途经过的所有IP地址 或 地址段 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用这个配置来实现:在traefik.toml文件中添加以下内容:[entryPoints] [entryPoints.http] [entryPoints.http.forwardedHeaders] trustedIPs = ["<YOUR_IP_HERE>"]。 ### 回答2: 要配置Traefik以透传客户端的真实IP,你需要进行以下步骤: 1. 首先,确保你已经正确安装和配置了Traefik。你可以使用Docker、Kubernetes或其他可用的集成方式来安装和运行Traefik。 2. 在Traefik配置文件中,你需要定义一个新的中间件来处理代理服务器的请求头。在中间件配置中,设置"forwardedHeaders"为"trustedIPs"。 3. 在Traefik中,配置文件的示例如下: ``` http: middlewares: traefik-headers: headers: forwardedHeaders: trustedIPs: ["127.0.0.1/32", "192.168.1.0/24"] ``` 在这个例子中,"127.0.0.1/32"和"192.168.1.0/24"是允许透传真实IPIP地址。你可以根据你的需要定制这个配置。 4. 在你的Traefik路由规则中,将刚刚定义的中间件应用到你想要透传真实IP的入口点上。例如: ``` http: routers: my-router: rule: "Host(`example.com`)" middlewares: - traefik-headers ``` 在上述示例中,中间件"traefik-headers"被应用到了路由"my-router"。 5. 最后,重新加载或重启Traefik以使配置生效。根据你的安装方式,可以使用相应的命令来重新加载或重启。 配置好后,Traefik将会透传客户端的真实IP地址到你的后端服务器。这样,你的应用程序就可以使用这个真实IP来获取客户端的信息或进行其他操作。 ### 回答3: 要使 Traefik 透传客户端的真实 IP,需要进行以下配置: 1. 在 Traefik 的配置文件中设置 `forwardedHeaders`。 ``` [http.middlewares.forwardedheaders.headers] insecure = true ``` 2. 将 Traefik 部署为反向代理服务器,并确保能正常将请求转发到后端服务。 3. 在后端服务中,确保能够获取到真实的客户端 IP。这取决于使用的编程语言或框架。 - 对于 Go 语言后端服务,可以使用 `request.Header.Get("X-Forwarded-For")` 获取真实客户端 IP。 - 对于其他语言后端服务,可以检查 `X-Forwarded-For` 或 `X-Real-IP` 头部来获取真实客户端 IP。 4. 确保 Traefik 在配置中正确读取和使用 `X-Forwarded-For` 头部。这通常是默认行为,但可以验证一下。 5. 在 Docker Compose 或 Kubernetes 配置中,确保 Traefik 配置了适当的标签或注解,以支持透传客户端的真实 IP。 以上配置可以确保 Traefik 正确地透传客户端的真实 IP。请注意,转发 HTTP 请求的任何反向代理服务器都需要进行类似的配置来实现透传

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值