首页 新闻 会员 周边 捐助

阿里云负载均衡 + 前置 nginx 获取客户端 IP 地址的问题

0
悬赏园豆:30 [已解决问题] 解决于 2025-06-13 12:45

用的是阿里云传统型负载均衡 CLB,如果客户端直接访问负载均衡,后端服务器可以通过 X-Forwarded-For 请求头获取到客户端真实IP。

但如果在负载均衡之前再加一层 nginx 反向代理,通过 X-Forwarded-For 获取到的却是 nginx 服务器的IP地址,获取不到客户端真实IP,请问如何解决这个问题?

问题补充:

对于阿里云负载均衡来说,前置 nginx 也是一个客户端,丢弃其发过来的 X-Forwarded-For 请求头是合理的,不然其他客户端可以通过 X-Forwarded-For 伪造 IP 地址

dudu的主页 dudu | 高人七级 | 园豆:24874
提问于:2025-06-11 09:30

dudu开始解决国外ip攻击博客园的问题了

echo_lovely 3个月前
< >
分享
最佳答案
0

不好意思,是我弄错了,阿里云负载均衡不会丢弃前置 nginx 转发过来的 X-Forwarded-For,而是在 X-Forwarded-For 中追加前置 nginx 服务器的 IP 地址

比如,客户端真实 IP 是 192.168.0.1,前置 nginx 服务器 IP 是 10.0.0.1,阿里云负载均衡转发过来的 X-Forwarded-For 是这样的

X-Forwarded-For: 192.168.0.1, 10.0.0.1
dudu | 高人七级 |园豆:24874 | 2025-06-13 12:44

除了在 X-Forwarded-For 中追加前置 nginx 的 IP 地址,阿里云负载均衡还会通过 RemoteIp 请求头传递前置 nginx 的 IP 地址

dudu | 园豆:24874 (高人七级) | 2025-06-13 17:14
其他回答(2)
0

意思是:[客户端] → [Nginx反向代理] → [阿里云负载均衡] → [后端服务器] ?
在自己的 ng中配置 X-Forwarded-For 可以么?

收获园豆:15
JingM | 园豆:137 (初学一级) | 2025-06-11 15:06
0

要代理层层转接 X-Forwarded-For 和 X-Forwarded-Proto 标头;最外部代理禁止转接防止伪造;
配置 ASP.NET Core 以使用代理服务器和负载均衡器里面有介绍最后有受信任的代理IP白名单

收获园豆:15
慧☆星 | 园豆:5840 (大侠五级) | 2025-06-12 14:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册