[已解決]通過多層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