[已解决]通过多层nginx,tomcat服务无法获取外网真实IP


问题描述:

       使用腾讯的御天验证码,提示IP非法IP,内网的tomcat,经过2层nginx代理,服务获取的IP地址为内网ip地址,由于腾讯云的御天验证码对单一IP的频繁访问有拦截的,认定为非法IP(刷验证码),需要让内网的tomcat服务获取到外网用户的真实IP,即可解决问题!!!

问题解决:

  01、nginx段配置

     proxy_pass    http://xxxcluster$request_uri;
     proxy_set_header   Host               $http_host;     #获取访问IP
     proxy_set_header   X-Real-IP        $remote_addr;
     proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

       02、tomcat-server.xml    在server.xml-host段

              <Valve className="org.apache.catalina.valves.RemoteIpValve"    #获取的真实IP
                       remoteIpHeader="x-forwarded-for"
                       remoteIpProxiesHeader="x-forwarded-by" />

               <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"   #访问日志的显示
               prefix="localhost_access_log." suffix=".txt"
               pattern="%{X-Real-IP}i %l %u %t &quot;%r&quot; %s %b" />      #%h  --->%{X-Real-IP}i 

测试观察:

  查看tomcat/logs/localhost_access_xxx.log      //看到访问IP地址有内网变化为外网访问用户的真实IP


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM