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;
}
}
