`
hngmduyi
  • 浏览: 335710 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

nginx多次转发后获取客户请求IP

 
阅读更多
/**
	 * 
	 * @Description:获取客户端请求IP地址,解决使用nginx请求转发后不能获取问题
	 * @param @param request
	 * @param @return
	 * @return String
	 * @throws
	 */
	public String getIpAddr(HttpServletRequest request){
		String ip=request.getHeader("X-Forwarded-For");
    	String localIP = "127.0.0.1";
	    if((ip == null)||(ip.length() == 0)||(ip.equalsIgnoreCase(localIP))||"unknown".equalsIgnoreCase(ip)){
	        ip = request.getHeader("Proxy-Client-IP");
		}
	    if((ip == null)||(ip.length() == 0)||(ip.equalsIgnoreCase(localIP))||"unknown".equalsIgnoreCase(ip)){
	        ip = request.getHeader("WL-Proxy-Client-IP");
		}
	    if((ip == null)||(ip.length() == 0)||(ip.equalsIgnoreCase(localIP))||"unknown".equalsIgnoreCase(ip)){
	        ip = request.getRemoteAddr();
		}
	    if(ip!=null && ip.length()>15){
	         if(ip.indexOf(",")>0){
	             ip = ip.substring(0,ip.indexOf(","));
	         }
	     }
	    return ip;
	}

 

分享到:
评论

相关推荐

    nginx经过多层代理后获取真实来源ip过程详解

    问题 nginx取 $remote_addr 当做真实ip,而事实上,$http_X_Forwarded_For 才是用户真实ip,$remote_addr只是代理上一层的地址 ...nginx: [emerg] unknown directive set_real_ip_from in /home/lnidmp/nginx/conf/

    nginx 代理转发

    总结,Nginx 代理转发功能结合负载均衡策略,可以有效地分发请求到多台 Tomcat 服务器,提高服务的可用性和性能。通过灵活配置,Nginx 还可以实现缓存、SSL/TLS 加密、限速等功能,是构建高效 Web 应用架构的重要...

    nginx负载均衡后如何记录来访者IP访客IP浏览者的IP

    然而,需要注意的是,`X-Forwarded-For`头可以被多次添加,如果请求经过了多个代理服务器。因此,这个头可能包含一系列的IP地址,例如:`client -> proxy1 -> proxy2 -> ... -> server`。在这种情况下,第一个IP地址...

    nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip

    服务器下发的cookie,在客户端下一次请求时才能生效。 (f)Nginx sticky模块不能与ip_hash同时使用 sticky [name=route] [domain=.foo.bar] [path=/] [expires=1h] [hash=index|md5|sha1] [no_fallback] [secure]...

    Nginx限制某个IP同一时间段的访问次数和请求数示例代码

    这个配置限制了每个 IP 地址每秒只能发送一个请求,`burst` 参数允许短暂的突发流量,如在5秒内可发送5个请求,超过这个限制则请求将被延迟或拒绝。`nodelay` 参数表示不延迟处理请求,一旦超过速率限制,立即返回 ...

    [线上问题] Nginx与Tomcat、Client之间请求的长连接配置不一致问题分析解决

    从提供的文件信息中,我们可以提取出有关于Nginx与Tomcat以及客户端之间请求的长连接配置不一致问题的分析解决知识点。同时,文件中提到了Linux系统中netstat命令的用法,我们可以从这部分内容中提取出与网络连接...

    Nginx反向代理.doc

    在客户端主机上,可以通过 `curl` 命令多次访问 Nginx 代理服务器的 IP 地址,观察返回的页面内容,以验证负载均衡和故障处理的正确性。如果配置得当,应该能看到请求在两台后端服务器间按权重比例进行分发,并且在...

    Nginx企业级WEB服务器实战

    1. **高并发响应能力**:Nginx在处理静态文件时能实现高达5万次每秒的并发请求处理能力。 2. **强大的负载均衡与反向代理性能**:Nginx能够有效地将请求分发到不同的服务器上,提高系统的可用性和响应速度。 3. **低...

    学习nginx案例

    1. **轮询(Round Robin)**:这是最简单的调度方式,Nginx会按顺序将请求分发给每个服务器,当所有服务器都处理过一次请求后,再从头开始循环。这种方法简单公平,但不考虑服务器的实际负载情况。 2. **最少连接数...

    Nginx模块参考手册中文版

    HTTP代理模块使Nginx能够作为HTTP代理服务器,转发请求到后端服务器。 ##### URL重写模块(Rewrite) URL重写模块用于对URL进行模式匹配和替换,常用于SEO优化和重定向规则的实现。 ##### SSI模块(SSI) SSI...

    nginx-sticky-module-1.26

    这个模块在分布式系统中尤其有用,它可以确保来自同一客户端的多次请求被定向到同一台后端服务器,从而避免了会话状态在多台服务器之间不一致的问题。通过将客户端的会话“粘”在特定服务器上,它提高了系统的效率和...

    Nginx 性能优化实践1

    Nginx提供了多种机制来控制缓存的更新,如`proxy_cache_revalidate`(根据Last-Modified或ETag头验证缓存)、`proxy_cache_bypass`(决定是否跳过缓存)和`proxy_cache_lock`(防止同一资源的并发请求导致多次缓存...

    Nginx利用Lua+Redis实现动态封禁IP的方法

    本文给大家介绍的是Nginx利用Lua+Redis实现动态封禁IP的方法,下面话不多说了,来一起看看详细的介绍吧 二、架构 实现 IP 黑名单的功能有很多途径: 1、在操作系统层面,配置 iptables,拒绝指定 IP 的网络请求; 2...

    nginx-sticky模块

    当客户端的第一次请求到达Nginx时,Nginx会根据负载均衡策略选择一台后端服务器处理请求,并将该服务器的标识(如IP地址或端口号)写入cookie。之后,当客户端再次发送请求时,Nginx会检查cookie中的信息,将请求...

    Nginx反向代理工作原理简介与配置详解-李雄

    5. Nginx接收到响应后,将其转发回客户端,至此完成一次反向代理过程。 配置Nginx反向代理的基本步骤如下: 1. 安装Nginx:在Linux系统上,可以通过包管理器(如apt-get或yum)来安装。 2. 配置服务器块:在Nginx...

    nginx1.8 负载均衡

    1. **轮询(round-robin)**:这是最简单的负载均衡策略,每个请求按顺序分配给后端服务器,当所有服务器都被分配一次后,再重新开始循环。这种方法确保了每台服务器都有机会处理请求。 2. **权重轮询(weighted ...

    Nginx配置负载均衡、动静分离、请求日志打印、日志切割、压缩、删除.md

    ### Nginx 配置详解:负载均衡、动静分离、请求日志打印、日志切割与管理 #### 一、Nginx配置负载均衡 **负载均衡**是Nginx的一项核心功能,它能帮助我们将客户端请求分发到不同的服务器上,从而提高系统的稳定性...

    nginx软件负载均衡

    3. **反向代理**:Nginx作为反向代理服务器,接收来自客户端的请求,然后根据预设的规则转发到后端的真实服务器,隐藏了真实服务器的信息,同时也提供了负载均衡的能力。 **Nginx负载均衡的实现方式** Nginx支持...

Global site tag (gtag.js) - Google Analytics