nginx中獲取真實ip(轉)


原文:http://blog.csdn.net/a936676463/article/details/8961504

server {

        listen       80;

        server_name  localhost;

        location /{

            root   html;

            index  index.html index.htm;

                            proxy_pass                  http://backend; 

           proxy_redirect              off;

           proxy_set_header            Host $host;

           proxy_set_header            X-real-ip $remote_addr;

           proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;

                     # proxy_set_header            X-Forwarded-For $http_x_forwarded_for;

        }

 

方案1

nginx這里作一個賦值操作,如下:

proxy_set_header            X-real-ip $remote_addr;

其中這個X-real-ip是一個自定義的變量名,名字可以隨意取,這樣做完之后,用戶的真實ip就被放在X-real-ip這個變量里了,然后,在web端可以這樣獲取:

request.getAttribute("X-real-ip")

 

方案2

proxy_set_header           X-Forwarded-For    $proxy_add_x_forwarded_for;

$proxy_add_x_forwarded_for的值是什么的呢?分下面兩種情況

如果$http_x_forwarded_for為空:  $proxy_add_x_forwarded_for = $http_x_forwarded_for + ',' + $remote_addr

如果$http_x_forwarded_for不為空: $proxy_add_x_forwarded_for = $remote_addr

其中$http_x_forwarded_for就是nginx接受到的http request header中的X-Forwarded-For的值,http request header中沒有X-Forwarded-For這個header,那$http_x_forwarded_for為空

$remote_addr是直接與nginx通信的那台主機的ip。

 


免責聲明!

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



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