欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java無法獲取真實(shí)IP解決方案

 更新時間:2020年12月10日 09:22:51   作者:碼農(nóng)記事本  
這篇文章主要介紹了Java無法獲取真實(shí)IP解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

問題

最近在寫博客瀏覽量的時候,設(shè)計(jì)了這么一個邏輯:同一個IP瀏覽一遍文章,5分鐘內(nèi)不刷新次數(shù)。就需要在服務(wù)器端得到用戶的真實(shí)IP,我代碼是這樣寫的(從網(wǎng)上找的方法):

public static String getRealIp(HttpServletRequest request) {
	String ip = request.getHeader("x-forwarded-for");
	String unknown = "unknown";
	if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
		ip = request.getHeader("Proxy-Client-IP");
	}
	if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
		ip = request.getHeader("WL-Proxy-Client-IP");
	}
	if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
		ip = request.getHeader("HTTP_CLIENT_IP");
	}
	if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
		ip = request.getHeader("HTTP_X_FORWARDED_FOR");
	}
	if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
		ip = request.getRemoteAddr();
	}
	return ip;
}

發(fā)現(xiàn)得到的IP總172開頭的IP,我查了下是本地局域網(wǎng)的IP,我的項(xiàng)目又是docker布署的,這又記我聯(lián)想到docker內(nèi)部的IP。。。

解決辦法

最后才發(fā)現(xiàn)nginx代理接口的時候,需要做獲取IP的配置

location ^~ /api {
  proxy_pass http://127.0.0.1:8110/;
  proxy_read_timeout 90;
  #得到請求真實(shí)IP
  proxy_set_header  X-Real-IP    $remote_addr;
  proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header  HTTP_X_FORWARDED_FOR $remote_addr;
  proxy_set_header  X-Forwarded-Proto $scheme;
  proxy_redirect   default;

}

加上面面的配置,問題解決!

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java.lang.UnsatisfiedLinkError: %1 不是有效的Win32應(yīng)用程序錯誤解決

    java.lang.UnsatisfiedLinkError: %1 不是有效的Win32應(yīng)用程序錯誤解決

    這篇文章主要給大家介紹了關(guān)于java.lang.UnsatisfiedLinkError: %1 不是有效的Win32應(yīng)用程序錯誤的解決方法,文中介紹的非常詳細(xì),需要的朋友們可以參考學(xué)習(xí),下面來一起看看吧。
    2017-03-03
  • Spring實(shí)戰(zhàn)之依賴關(guān)系注入之后的行為示例

    Spring實(shí)戰(zhàn)之依賴關(guān)系注入之后的行為示例

    這篇文章主要介紹了Spring實(shí)戰(zhàn)之依賴關(guān)系注入之后的行為,結(jié)合實(shí)例形式分析了Spring依賴關(guān)系注入之后的行為實(shí)現(xiàn)與使用相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • SpringBoot集成Quartz實(shí)現(xiàn)定時任務(wù)的方法

    SpringBoot集成Quartz實(shí)現(xiàn)定時任務(wù)的方法

    Quartz是一個定時任務(wù)框架,其他介紹網(wǎng)上也很詳盡。這里要介紹一下Quartz里的幾個非常核心的接口。通過實(shí)例代碼給大家講解SpringBoot集成Quartz實(shí)現(xiàn)定時任務(wù)的方法,感興趣的朋友一起看看吧
    2020-05-05
  • java多線程編程必備volatile與synchronized深入理解

    java多線程編程必備volatile與synchronized深入理解

    這篇文章主要介紹了java多線程編程必備volatile與synchronized的深入理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Spring框架應(yīng)用的權(quán)限控制系統(tǒng)詳解

    Spring框架應(yīng)用的權(quán)限控制系統(tǒng)詳解

    在本篇文章里小編給大家整理的是關(guān)于基于Spring框架應(yīng)用的權(quán)限控制系統(tǒng)的研究和實(shí)現(xiàn),需要的朋友們可以學(xué)習(xí)下。
    2019-08-08
  • 你知道Spring中為何不建議使用字段注入嗎

    你知道Spring中為何不建議使用字段注入嗎

    這篇文章主要給大家介紹了關(guān)于Spring中為何不建議使用字段注入的相關(guān)資料,通過本文你將對Spring的引入方式有更一步的了解,需要的朋友可以參考下
    2021-08-08
  • Springboot如何使用mybatis實(shí)現(xiàn)攔截SQL分頁

    Springboot如何使用mybatis實(shí)現(xiàn)攔截SQL分頁

    這篇文章主要介紹了Springboot使用mybatis實(shí)現(xiàn)攔截SQL分頁,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • Java參數(shù)傳遞實(shí)現(xiàn)代碼及過程圖解

    Java參數(shù)傳遞實(shí)現(xiàn)代碼及過程圖解

    這篇文章主要介紹了Java參數(shù)傳遞實(shí)現(xiàn)代碼及過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • springboot配置加密的正確姿勢分享

    springboot配置加密的正確姿勢分享

    在Spring boot開發(fā)中,需要在application.yml文件里配置數(shù)據(jù)庫的連接信息,或者在啟動時傳入數(shù)據(jù)庫密碼,如果不加密,傳明文,數(shù)據(jù)庫就直接暴露了,下面這篇文章主要給大家介紹了關(guān)于springboot配置加密的正確姿勢,需要的朋友可以參考下
    2022-11-11
  • 在idea中創(chuàng)建SpringBoot模塊的兩種方式

    在idea中創(chuàng)建SpringBoot模塊的兩種方式

    這篇文章主要介紹了在idea中創(chuàng)建一個SpringBoot模塊,本文給大家分享兩種方式,每種方式分步驟給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05

最新評論