一、$remote_addr
表示发出请求的客户端主机的 IP 地址,但它的值不是由客户端提供的,而是Nginx
与客户端进行TCP
连接过程中,获得的客户端的真实地址 IP
地址,REMOTE_ADDR
无法伪造,因为建立 TCP
连接需要三次握手,如果伪造了源 IP
,无法建立 TCP
连接,更不会有后面的 http
请求。
当你的浏览器访问某个网站时:
- 假设中间没有任何代理,那么网站的
Web
服务器(Nginx
,Apache
等)获取的remote_addr
为你的机器IP
。 - 如果你用了某个代理,那么你的浏览器会先访问这个代理,然后再由这个代理转发到网站,这样
Web
服务器获取的remote_addr
为代理机器的IP
。
二、$X-Real-IP
X-Real-IP
是一个自定义Header
。X-Real-Ip
通常被 HTTP
代理用来表示与它产生 TCP
连接的设备 IP
,这个设备可能是其他代理,也可能是真正的请求端。需要注意的是,X-Real-Ip