ALB前面加上waf和ddos后获取不到真实客户端ip,怎么解决?
ALB 前添加 WAF 和 DDoS 防护后无法获取真实客户端 IP 的问题,可能是因为在使用 ALB 前,WAF 和 DDoS 防护服务会把客户端发起的请求先转发给 WAF 或 DDoS 防护实例,再由 WAF 或 DDoS 防护实例转发到 ALB,从而导致 ALB 无法获得客户端的真实 IP。
为了解决这个问题,您可以尝试以下两种方法:
在 ALB 的 Listener 规则中,您可以添加一个转发规则,使得后端服务器不再获得 ALB 的 IP,而是获得来自客户端的真实 IP。为了实现这个规则,您需要在 Listener 规则的重定向 URL 中添加 X-Forwarded-For
头。例如,在 Nginx 的配置文件中,您可以添加以下代码:
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://your-server;
}
这样后端服务器就可以通过 X-Forwarded-For
头来获取客户端真实 IP 了。
在 DNS 解析时,您可以将域名解析为一个 CNAME 记录,然后将这个 CNAME 记录指向 ALB 的域名,再通过 ALB 转发到后端服务器。这样一来,在客户端通过 DNS 请求您的域名时,DNS 服务器就会返回一个 CNAME 记录,通过这个 CNAME 记录客户端将请求发送到 WAF 或 DDoS 防护,再由 WAF 或 DDoS 防护转发到 ALB,最终从后端服务器上获取到客户端真实 IP。
以上两种方法都可以实现客户端真实 IP 的获取,具体实施时,您可以根据实际情况选择合适的方法。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云负载均衡(Server Load Balancer,简称SLB)是云原生时代应用高可用的基本要素。通过将流量分发到不同的后端服务来扩展应用系统的服务吞吐能力,消除单点故障并提升应用系统的可用性。 阿里云SLB包含面向4层的网络型负载均衡NLB、面向7层的应用型负载均衡ALB和传统型负载均衡CLB,是阿里云官方云原生网关。