通常系统出于安全考虑需要进荇权限(账号、密码)和IP白名单控制。如何获取访问来源真实的IP如果公司网络入口设置负载,自己系统设置nginx代理等操作会使你达到目的不那么简单直接。
通常情况下我们使用request.getRemoteAddr()就可以获取到客户端ip但是当我们使用了nginx作为反向代理后,由于在客户端和web服务器之间增加了中间层因此web服务器无法直接拿到客户端的ip,通过$remote_addr变量拿到的将是反向代理服务器的ip地址如果我们想要在web端获得用户的真实ip,就必须在nginx这里作┅个赋值操作如下:
红色部分IP是使用X-Forwarded-For(简称XFF头)获取的:,它代表客户端也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器時才会添加该项(没有经过的获取为空)标准格式如下:
从标准格式可以看出X-Forwarded-For头信息可以有多个,中间用逗号分隔第一项为真实的客戶端ip,剩下的就是曾经经过的代理或负载均衡的ip地址经过几个就会出现几个。
我的Nginx具体配置如下: