zoukankan      html  css  js  c++  java
  • tomcat server获取用户的请求地址

    当用户 与 tomcat之间 用 nginx做跳转时,

    HttpServletRequest 中的 getRemoteHost()方法获取到的只是nginx的地址,而不能拿到用户真正的请求地址

     

    解决方式 :

    第一步 ,nginx 的 nginx.conf配置文件中:

    location ~ ^/site {

      proxy_pass http://localhost:8088;

      proxy_set_header  X-Real-IP  $remote_addr;   // 主要添加这一句代码

    }

    第二步 ,服务端添加一个过滤器,主要方法如下:

    public void setRemoteAddrIp(HttpServletRequest request) {

            String ipFromNginx = getHeader(request, "X-Real-IP");

            System.out.println("ipFromNginx:" + ipFromNginx);

            System.out.println("getRemoteAddr:" + request.getRemoteAddr());

            request.setAttribute("remoteIP" , StringUtils.isBlank(ipFromNginx) ? request.getRemoteAddr() : ipFromNginx);

    }

    private String getHeader(HttpServletRequest request, String headName) {

            String value = request.getHeader(headName);

            return !StringUtils.isBlank(value) && !"unknown".equalsIgnoreCase(value) ? value : "";

    }

     

    如果tomcat日志中也需要存储远程地址,在tomcat的配置文件中配置以下内容:

    <Valve className="org.apache.catalina.valves.AccessLogValve"
                     directory="logs"  prefix="tomcat_access_log." suffix=".txt"
                     pattern="%a %r %t %{X-Real_IP}i" resolveHosts="false"/>

  • 相关阅读:
    第08组 Alpha冲刺(4/6)
    2019 SDN阅读作业
    第08组 Alpha冲刺(3/6)
    2019 SDN上机第3次作业
    第08组 Alpha冲刺(2/6)
    答疑
    八、对抗样本1
    九、产生和防御对抗样本的新方法 | 分享总结--廖方舟(论文11)
    02-NLP-08-条件随机场与应用
    02-NLP-07-词向量及相关应用
  • 原文地址:https://www.cnblogs.com/ytfcz/p/4837762.html
Copyright © 2011-2022 走看看