关于获取真实IP的那些事

因为本站的使用了各种加速& CDN 等等,说白了本人穷,Server 使用了1G内存 1个核的云主机,而且使用Java,所以使用了大量缓存,避免连接服务器;

结构参考:

https://www.processon.com/view/link/58668703e4b067ce85115cba

之前在网上找了下,说Nginx 配置 remote放到header里即可,

location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;

    proxy_pass http://127.0.0.1:9009/;
    proxy_redirect off;
}

测试了半天发现,remote Ip还是cdn的ip,所以相当悲伤,之后又换了各种方案,曾经准备视图使用 通过js 获取IP发送到后端的方案。

还是不甘心,决定找找哪里是否有信息,仔细研究了下head;

 System.out.println("header params");
        Enumeration hnames=getRequest().getHeaderNames();
        for (Enumeration e = hnames ; e.hasMoreElements() ;) {
            String thisName=e.nextElement().toString();
            String thisValue=getRequest().getHeader(thisName);
            System.out.println(thisName+"-------"+thisValue);
        }
        System.out.println("request params:");
        Enumeration rnames=getRequest().getParameterNames();
        for (Enumeration e = rnames ; e.hasMoreElements() ;) {
            String thisName=e.nextElement().toString();
            String thisValue=getRequest().getParameter(thisName);
            System.out.println(thisName+"-------"+thisValue);
        }

终于发现;

=====
header params
x-real-ip-------27.152.185.173
host-------java.duzhi.me:8080
connection-------close
accept-encoding-------gzip
cookie-------__cfduid=d798a59480ac19755edf7fdfa20ba80751476428506; _ga=GA1.2.400602473.1480323088; bdshare_firstime=1482660222141; user=182166a5a6d705849634467ee1ceec8b#JP#1482669693649#JP#604800#JP#1; __jsluid=582e04ec8afeec431fc126e4562136ea; Hm_lvt_d7682ab43891c68a00de46e9ce5b76aa=1482915696; Hm_lvt_8875c662941dbf07e39c556c8d97615f=1482921140; _editor=tinymce; tin_check_nonce=%5Bobject%20Object%5D; CNZZDATA1261031304=1820087742-1482657098-%7C1483110929
user-agent-------Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
cf-ipcountry-------CN
x-forwarded-for-------58.211.2.18
cf-ray-------3196cf9523b34394-SZV
x-forwarded-proto-------http
cf-visitor-------{"scheme":"http"}
upgrade-insecure-requests-------1
accept-------text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
accept-language-------zh-CN,zh;q=0.8,en;q=0.6
cf-connecting-ip-------117.62.180.20
qvia-------3ad3021238c8f7429e182e3be6b6704d7248099e
x-tencent-ua-------Qcloud
x-daa-tunnel-------hop_count=1
request params:

 

终于清晰了,通过header “cf-connecting-ip” 找到了,真实一曲波折啊。

给大家分享下。

除特别注明外,本站所有文章均为duzhi原创,转载请注明出处来自https://www.duzhi.me/article/56.html

联系我们

******

在线咨询:点击这里给我发消息

邮件:ashang.peng#aliyun.com

QR code