99er久久国产精品先锋_亚洲丰满少妇撒尿BBo_老外和中国女人毛片免费视频_思思热在线视频网站_av无码不卡高清_国产 激情 自拍_激情综合色婷婷激情丁香_少妇与子乱A级全毛片_男人捅女人的软件_日本欧美日韩

...

nginx轉(zhuǎn)發(fā)后后端怎么獲取用戶真實(shí)IP

2021-07-14

經(jīng)常有需求要獲取訪問用戶的IP,在經(jīng)過nginx轉(zhuǎn)發(fā)后真實(shí)IP就被隱藏起來了,我們需要在頭部信息里拿真實(shí)IP,下面是拿IP的代碼,考慮了各種情況。


public static String getIpAddr(HttpServletRequest request) {
   String ip = request.getHeader("x-real-ip");

   if (ip == null || ip.length() == 0 
        || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("x-forwarded-for");
        if (ip != null) {
            ip = ip.split(",")[0].trim();
        }
    }

    if (ip == null || ip.length() == 0 
        || "unknown".equalsIgnoreCase(ip)){
        ip = request.getHeader("Proxy-Client-IP");
    }

    if (ip == null || ip.length() == 0 
        || "unknown".equalsIgnoreCase(ip){
        ip = request.getHeader("WL-Proxy-Client-IP");
    }

    if (ip == null || ip.length() == 0 
        || "unknown".equalsIgnoreCase(ip)){
        ip = request.getRemoteAddr();
    }

    return ip;
}

但是后面還是一直拿不到真實(shí)的IP,基本上拿到的都是127.0.0.1 后面我把請求頭都輸出來了 我們在控制臺把所有請求頭輸出來看看 獲取請求頭代碼


Enumeration<String> h = request.getHeaderNames();while(h.hasMoreElements()){
    String n = h.nextElement();
    System.out.println(n+"==="+request.getHeader(n));}


輸出結(jié)果如下


host===127.0.0.1:8080
connection===close
cache-control===max-age=0
upgrade-insecure-requests===1
user-agent===Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36
accept===text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
referer===http://cxytiandi.com/navigation
accept-encoding===gzip, deflate, sdch
accept-language===zh-CN,zh;q=0.8

發(fā)現(xiàn)確實(shí)真實(shí)IP沒有被帶過來,我用的是nginx的默認(rèn)配置,是不會帶過來的。

需要添加轉(zhuǎn)發(fā)的配置,將用戶真實(shí)的IP設(shè)置到請求頭中,然后帶過來。

在nginx.conf中的location中增加如下代碼:

proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;

然后再次請求就能看到輸出的請求頭的信息就多了一個x-forwarded-for。 真實(shí)IP被帶過來了。


x-forwarded-for===124.15.252.240
host===cxytiandi.com
connection===close
cache-control===max-age=0
upgrade-insecure-requests===1
user-agent===Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36
accept===text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
referer===http://cxytiandi.com/navigation
accept-encoding===gzip, deflate, sdch
accept-language===zh-CN,zh;q=0.8


來源:tencent