要获取CDN后的真实IP,通常有以下几种方法:
可以使用像ngrok、tunnelbroker、shadowsocks等工具来实现IP代理,然后将代理服务器的地址设置为CDN服务提供商的公网IP。然后将用户请求的服务转发到代理服务器上,这样就可以获得客户端的真实IP地址。
可以将在CDN服务提供商上配置反向解析,将客户端的IP地址解析到CDN服务提供商提供的公网IP上。这样就可以通过访问解析到的IP来获取客户端的真实IP地址。
可以在服务端设置cookie或session来记录用户的IP地址信息。然后在请求中检查cookie或session中是否包含IP地址信息,如果包含则直接返回该IP地址信息。
以下是利用反向解析获取CDN后真实IP的一个例子:
var http = require("http");
var url = require("url");
var crypto = require("crypto");
var reqOpt = ;
var querystring = require("querystring");
var headers = ;
http.get(url.format(reqOpt), function (res)
});
上面的代码是通过http.get方法发起一个GET请求,将请求头和请求内容发送到目标地址。然后在返回的响应头中获取 x-forwarded-for
字段的信息,并将所有值使用空格分割成一个数组,第一个值就是客户端的真实IP地址。
这只是其中一种获取真实IP的方法,还有其他的方法可以实现同一个目的。需要注意的是,使用反解需要服务端支持反向解析服务。
领取专属 10元无门槛券
手把手带您无忧上云