1.相关nginx配置(通过header将客户端ip,host等信息传入)


location ~ .*.do$
{
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass_header Set-Cookie;
proxy_pass_header P3P;
proxy_pass http://127.0.0.1:8090;
}

2.获取ip, 主要通过分析request中的header信息


public static String getClientIP(HttpServletRequest request) {
String ip = request.getHeader("X-Real-IP");
if (isBlank(ip) || isIPUnknown(ip)) {
ip = request.getHeader("X-Forwarded-For");
}
if (isBlank(ip) || isIPUnknown(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (isBlank(ip) || isIPUnknown(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP"); //WebLogic
}
if (isBlank(ip) || isIPUnknown(ip)) {
ip = request.getRemoteAddr();
}
return ip;
} private static boolean isIPUnknown(String ip) {
return "unknown".equalsIgnoreCase(ip);
} public static boolean isBlank(String s) {
return s == null || s.trim().length() == 0;
}

通过nginx代理之后,获取客户端ip的更多相关文章

  1. 多级nginx代理,获取客户端真实ip

    今天服务里的微信公众号支付业务突然不能用了,报错为网络环境未能通过安全验证,请稍后再试.检查后端日志,没有任何问题,看来是成功创建支付订单,但是调起支付时出现了问题.上网查了一下,这个报错的直接原因是 ...

  2. go 通过nginx代理后获取用户ip

    go 如果使用自己的服务器,可以直接使用 net/http 来获取 func ip(w http.ResponseWriter, r *http.Request) { fmt.Println(r.Re ...

  3. .Net Core/Framework之Nginx反向代理后获取客户端IP等数据探索

    公司项目最近出现获取访问域名.端口.IP错误现象,通过排查发现, 之前项目一直通过Nginx自定义Headers信息来获取,但最近运维人员失误操作造成自定义Header信息丢失,造成项目拿不到对应的数 ...

  4. nginx反向代理node.js获取客户端IP

    使用Nginx做node.js程序的反向代理,会有这么一个问题:在程序中获取的客户端IP永远是127.0.0.1 如果想要拿到真实的客户端IP改怎么办呢? 一.首先配置Nginx的反向代理 proxy ...

  5. JAVA获取客户端请求的当前网络ip地址(附:Nginx反向代理后获取客户端请求的真实IP)

    1. JAVA获取客户端请求的当前网络ip地址: /** * 获取客户端请求的当前网络ip * @param request * @return */ public static String get ...

  6. 关于.net core使用nginx做反向代理获取客户端ip的问题

    1.正常情况下.net core获取客户端ip是比较简单的 /// <summary> /// 获取客户Ip /// </summary> /// <param name ...

  7. nginx反向代理后abp的webapi host如何获取客户端ip?

    dotnet core 跨平台是微软伟大的创举,脱离iis后服务器成本都降低了. 问题 这不,采用abp搞了个小项目,部署到centos后发现审计日志里面的ip信息不对. 解决 这个问题在.net 4 ...

  8. 【Nginx】如何获取客户端真实IP、域名、协议、端口?看这一篇就够了!

    写在前面 Nginx最为最受欢迎的反向代理和负载均衡服务器,被广泛的应用于互联网项目中.这不仅仅是因为Nginx本身比较轻量,更多的是得益于Nginx的高性能特性,以及支持插件化开发,为此,很多开发者 ...

  9. Nginx作为反向代理时传递客户端IP的设置方法

    因为nginx的优越性,现在越来越多的用户在生产环境中使用nginx作为前端,不管nginx在前端是做负载均衡还是只做简单的反向代理,都需要把日志转发到后端real server,以方便我们检查程序的 ...

  10. nginx代理后,获取request的ip

    应用程序部署上线,一般都会用nginx之类的来进行反向代理,而不是直接访问tomcat之类的容器. 这时候如果用平时的获取ip的代码,就只会获取到nginx所在服务器的ip, 就失去了本身的意义. 今 ...

随机推荐

  1. 今年暑假不AC

    "今年暑假不AC?""是的.""那你干什么呢?""看世界杯呀,笨蛋!""@#$%^&*%...&quo ...

  2. Linux opencv安装与编译

    参考http://blog.csdn.net/solomon1558/article/details/51967280 1安装cmake以及依赖库 $ sudo apt-get install cma ...

  3. activity 四种启动模式

    前言 Activity的启动模式决定了Activity的启动运行方式 四种模式 Activity启动模式设置: <activity android:name=".MainActivit ...

  4. C#字符串的方法

    static void Main(string[] args) { StrMethod(); } public static void StrMethod() { string myString = ...

  5. github android

    作者:ruijun 链接:https://www.zhihu.com/question/37160415/answer/79569042 来源:知乎 著作权归作者所有,转载请联系作者获得授权. ### ...

  6. asp.net5 操作Cookie

    写入Cookie var CookieOption = new CookieOptions(); CookieOption.Path = "/"; //on localhost, ...

  7. 项目中如何GB2312转UTF-8

    $str = mb_convert_encoding($str, "gb2312", "UTF-8"); // 这是一个PHP 自带函数 参数1 是要转的字符, ...

  8. catalina

    用catalina启动tomcat容器,将项目放到tomcat中,通过cmd:启动:catalina,相当于本地的测试环境.

  9. C 一些基础

    C语言的几个输入输出函数 #include <stdio.h> getchar(),putchar() scanf(),printf() 1->getchar()与scanf()唯一 ...

  10. 【转】Tomcat版本是32位、64位问题

    转载地址:http://www.cnblogs.com/greensleeves/p/3168541.html 最近遇到一个Tomcat windows安装版本是32位还是64位问题.由于一系列原因, ...