nginx做反向代理负载均衡 Java怎么获取后端服务器获取用户IP

nginx做反向代理负载均衡 Java怎么获取后端服务器获取用户IP,第1张

/
  获取访问者IP地址
  <p>在一般情况下使用RequestgetRemoteAddr()即可,但是经过nginx等反向代理软件后,这个方法会失效。</p>
  <p>本方法先从Header中获取X-Real-IP,如果不存在再从X-Forwarded-For获得第一个IP(用,分割)。</p>
  <p>如果还不存在则调用RequestgetRemoteAddr()。</p>
  @param request
  @return
 /
public static String getIp(>首先服务器IP是动态的,这个接口还怎么访问呢?
所以,应该是要请求一个固定可访问的接口,然后这个接口去访回动态的其他服务器IP和端口,而这端口和IP是没办法在本机获取,需要在想要被访问的程序启动时,将其IP和端口写入共享区域(数据库,共享内存等),固定的获取接口根据条件获取动态IP和端口。

public static void main(String[] args) {

try {

Systemoutprintln("当前时间:"+new Date());

Systemoutprintln("IP地址 : " + InetAddressgetLocalHost());

} catch (UnknownHostException e) {

eprintStackTrace();

}

}

网络通信可分为两种模式:TCP有连接的通信
UDP无连接的通信
依照上述的问题我可以理解为你是要进行有连接的通信。是要经过三次握手才能实现可靠的连接
第一次:建立连接时三次握手,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN(Synchronize Sequence Numbers)同步序列号。

服务器端即可使用:
Socket s=serverSocketaccept();
String clientIP=sgetInetAddress()toString();
这就实现了java服务器端获取到连接此服务器的客户端的IP了,你若想实现获取所有连接此服务器的客户端的IP,你可以把每次accept()返回的socket放进全局的Vector里面,然后在遍历这个vector方法就同上代码咯……


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12773758.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存