獲取當前客戶端IP地址詳解「js獲取客戶端ip地址」

假如有一個客戶端請求經過了nginx代理轉發以後發送給node.js服務器,如果我們想要獲取到客戶端的真實ip地址,而不是nginx服務器的地址的話應該怎麼做呢?

首先在nginx中配置一下被代理服務器接收到的header信息

proxy_set_header用來配置被代理服務器接收到的header信息。配置語法如下:

proxy_set_header field value;

其中,field為要設置的變量名,value為變量的值。

在這裡我們將真實的客戶端ip設置為X-Real-IP,然後傳給被代理服務器,這樣被代理服務器就可以通過header信息來獲取到客戶端真實的ip了。配置如下:

server {
        listen 80;
        server_name  yuanjingyan.com;
        if ( $host !~* "yuanjingyan.com" ) {
            return 404;
        }
        location / {
            proxy_pass http://ip:port;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

然後在node.js中獲取客戶端真實ip

在node.js中我們可以通過在nginx中配置的變量X-Real-IP來獲取客戶端真實ip,代碼如下:

var clientIP = context.req.headers['x-real-ip']; //客戶端ip,獲取的是經過nginx代理後的真實請求ip
if(!clientIP){
  clientIP=context.req.connection.remoteAddress; //客戶端ip,獲取的是沒有經過nginx代理後的真實請求ip
}

其中要注意的是headers中的“x-real-ip”要寫成小寫的,不能寫成“X-Real-IP”,否則獲取不到數據。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/235066.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-12 11:50
下一篇 2024-12-12 11:50

相關推薦

發表回復

登錄後才能評論