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