nginx獲取上游真實IP(ngx_http_realip_module)


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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM