• tomcat 获取真实ip地址


    tomcat日志记录nginx的真实ip

     
    1、在nginx.conf设置如下
    http {
      set_real_ip_from 10.168.38.0/24;    #通过该指令指定信任的地址,将会被替代为精确的IP地址
      real_ip_header X-Forwarded-For;      #这个指令用于设置使用哪个头来替换IP地址。如果使用了X-Forwarded-For,那么该模块将会使用X-Forwarded-For头中的最后一个IP地址来替换前端代理的IP地址。
      }
    location / {

      proxy_pass http://test/wdzj/;
      proxy_set_header Host $host:$server_port;
      proxy_set_header REMOTE-HOST $remote_addr;

      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  #如果没有跳转机,这一段替换为proxy_set_header X-Real-IP $remote_addr;

      }
     
    2、修改tomcat配置文件server.xml
    <HOST>
     
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="localhost_access_log." suffix=".txt"
                   pattern="%{X-Forwarded-For}i %h %l %u %t %r %s %b %{Referer}i %{User-Agent}i" resolveHosts="false" />     #注意如果前端没有nginx跳转的话,将X-Forwarded-For替换成X-Real-IP
     
    </HOST>
     
    查看 tomcat log/localhost_access_log.txt内容如下
     
     
     
     
     

    %a

    这是记录访问者的IP,在日志里是127.0.0.1

    %A

    这是记录本地服务器的IP,在日志里是192.168.254.108

    %b

    这是发送信息的字节数,不涵括http头,如果字节数为0的话,显示为-

    %B

    看tomcat的解释,没看出来与b%的区别,但我这里显示为-1,没想明白,望知道者告知,我把官方解释贴出来吧 Bytes sent, excluding HTTP headers

    %h

    这个就是服务器名称了,如果resolveHosts为false的话,这里就是IP地址了,我的日志里是127.0.0.1

    %H

    访问者使用的协议,这里是HTTP/1.1

    %l

    这个也不太清楚,官方也说这个always return '-' 官方解释:Remote logical username from identd (可能这样翻译:记录浏览者进行身份验证时提供的名字)(always returns '-')

    %m

    访问的方式,是GET还是POST,我这是GET

    %p

    本地接收访问的端口,呵呵,我这里是80啦

    %q

    比如你访问的是aaa.jsp?bbb=ccc,那么这里就显示?bbb=ccc,明白了吧,这个q是querystring的意思

    %r

    官方解释:First line of the request (method and request URI),不是很明白

    %s

    这个是http的状态,我这里返回的是304,咱们经常看见访问某个网页报错误500什么的,那也会返回500

    %S

    用户的session ID,这个session ID大家可以另外查一下详细的解释,反正每次都会生成不同的session ID

    %t

    这就是时间啦,好像有一个Common Log Format可以改,不过我没找到

    %u

    得到了验证的访问者,否则就是"-"

    %U

    访问的URL地址,我这里是/rightmainima/leftbott4.swf

    %v

    服务器名称,可能就是你url里面写的那个吧,我这里是localhost

    %D

    官方解释:Time taken to process the request, in millis,应该是访问发生的时间,以毫秒记

    %T

    官方解释:Time taken to process the request, in seconds,应该是访问发生的时间,以秒记

  • 相关阅读:
    Kettle使用介绍——Kettle的安装与基本使用
    Every Tom,Dick and Harry. 不管张三李四。
    AOP
    Redis 常用命令学习一:通用的基本命令
    Python 解LeetCode:23. Merge k Sorted Lists
    Python 解LeetCode:33. Search in Rotated Sorted Array
    Python 解leetcode:48. Rotate Image
    小米Python后端面试题
    Python 解leetcode:49. Group Anagrams
    Python 解leetcode:3. Longest Substring Without Repeating Characters
  • 原文地址:https://www.cnblogs.com/zenghui940/p/4244309.html
Copyright © 2020-2023  润新知