realip模块的作用是:当本机的nginx处于一个反向代理的后端时获取到真实的用户IP,如果没有realip模块,nginx的access_log里记录的IP会是反向代理服务器的IP,PHP中$_SERVER[‘REMOTE_ADDR’]的值也是反向代理的IP。
而安装了realip模块,并且配置正确,就可以让nginx日志和php的REMOTE_ADDR都变成真实的用户IP。
如果不做任何配置,后端web服务器nginx日志里记录的IP将会是10.10.10.10,这个时候我们增加如下nginx
set_real_ip_from 10.10.10.10; real_ip_header X-Forwarded-For; set_real_ip_from指令是告诉nginx,10.10.10.10是我们的反代服务器 (信任服务器,记住这个名词,下面会提到),不是真实的用户IP, real_ip_header则是告诉nginx真正的用户IP是存在X-Forwarded-For请求头中 (对X-Forwarded-For不了解的同学请自行百度)。 重新加载nginx配置之后,就可以看到nginx日志里记录的IP就是123.123.123.123了,
#负载配置
upstream web { #ip_hash; server 10.78.88.8:80 weight=6; server 10.78.88.9:81 weight=4; } server { listen 8080; server_name localhost; location / { index index.html index.htm; proxy_pass http://web; proxy_redirect http://web http://$host:$server_port; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; } }