當前位置:首頁 » 雲伺服器 » 後端伺服器如何從nginx獲得真實ip

後端伺服器如何從nginx獲得真實ip

發布時間: 2023-09-11 07:29:44

⑴ nginx做反向代理負載均衡 java怎麼獲取後端伺服器獲取用戶IP

首先,在前端nginx上需要做如下配置:
location /
proxy_set_hearder host $host;
proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for;
proxy_set_header X-real-ip $remote_addr;
};
nginx會在把請求轉向後台real-server前把http報頭中的ip地址進行替換;這樣操作完成後,real-server也需要做一些操作;
public class ClientIPUtils {
/**
* 在很多應用下都可能有需要將用戶的真實IP記錄下來,這時就要獲得用戶的真實IP地址,在JSP里,獲取客戶端的IP地
* 址的方法是:request.getRemoteAddr(),這種方法在大部分情況下都是有效的。但是在通過了Apache,Squid等
* 反向代理軟體就不能獲取到客戶端的真實IP地址了。
* 但是在轉發請求的HTTP頭信息中,增加了X-FORWARDED-FOR信息。用以跟蹤原有的客戶端IP地址和原來客戶端請求的伺服器地址
* @param request
* @return
*/
public static String getClientIp(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
//String ip = request.getHeader("X-real-ip");
logger.debug("x-forwarded-for = {}", ip);
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
logger.debug("Proxy-Client-IP = {}", ip);
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
logger.debug("WL-Proxy-Client-IP = {}", ip);
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
logger.debug("RemoteAddr-IP = {}", ip);
}
if(StringUtils.isNotBlank(ip)) {
ip = ip.split(",")[0];
}
return ip;
}
}

⑵ 如何配置才可以獲得nginx的客戶端的真實ip

使用Nginx作為反向代理時,Tomcat的日誌記錄的客戶端IP就不在是真實的客戶端IP,而是Nginx代理的IP。要解決這個問題可以在Nginx配置一個新的Header,用來存儲$remote_add,然後再Tomcat獲取記錄這個值。

Nginx新增配置:
[java] view plainprint?
proxy_set_header X-Real-IP $remote_addr;
2.修改tomcat日誌配置:
[c-sharp] view plainprint?
<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"/>

⑶ nginx做反向代理負載均衡 Java怎麼獲取後端伺服器獲取用戶IP

/**
*獲取訪問者IP地址
*<p>在一般情況下使用Request.getRemoteAddr()即可,但是經過nginx等反向代理軟體後,這個方法會失效。</p>
*<p>本方法先從Header中獲取X-Real-IP,如果不存在再從X-Forwarded-For獲得第一個IP(用,分割)。</p>
*<p>如果還不存在則調用Request.getRemoteAddr()。</p>
*@paramrequest
*@return
*/
publicstaticStringgetIp(HttpServletRequestrequest){
Stringip=request.getHeader("X-Real-IP");
if(ValidateUtil.isNotEmpty(ip)&&!"unknown".equalsIgnoreCase(ip)){
returnip;
}
ip=request.getHeader("X-Forwarded-For");
if(ValidateUtil.isNotEmpty(ip)&&!"unknown".equalsIgnoreCase(ip)){
intindex=ip.indexOf(",");
if(index!=-1){
returnip.substring(0,index);
}else{
returnip;
}
}else{
returnrequest.getRemoteAddr();
}
}

⑷ nginx如何獲取自己的ip

nginx這里作一個賦值操作,如下:
proxy_set_header X-real-ip $remote_addr;
其中這個X-real-ip是一個自定義的變數名,名字可以隨意取,這樣做完之後,用戶的真實ip就被放在X-real-ip這個變數里了,然後,在web端可以這樣獲取:
request.getAttribute(「X-real-ip」)

⑸ nginx 反向代理和後端伺服器獲取真實 ip

nginx 反向代理是什麼?

為了提高吞吐量,有些伺服器是專門跑程序用的,有些伺服器是跑靜態資源的。

你可能訪問一個網頁,裡面有圖片,而這個圖片並不是你訪問的這個網頁的伺服器,也叫前端伺服器,而是你的圖片請求被 Nginx 轉發到了一台後端伺服器,由後端伺服器提供給前端伺服器再返回到客戶端的。

我這台 nginx 的配置非常細致,有 nginx.conf ,在這個配置中包含了兩個文件夾,一個是 sites-available ,一個是 sites-enabled , nginx.cof 一般用來做整個 nginx 的配置。

域談李名配置段在 sites-avaliable 下,然後建立一個軟連接到 sites-enabled 下去。

反向代理就寫在域名配置段里,客戶端通過訪問伺服器,伺服器將請求分配按照 server 段里的則正匹配,將請求按照 fastcgi 發送到 php-fpm 通過分配再到我們的程序。

反向代理一樣,也需要通過正則來捕捉到用戶的請求。(2018-12-9,現在流行的做法是將靜態資源全部壓縮打包,丟到cdn上去,伺服器基本只做埠轉發,https配置,日誌,負載均衡,等很多很多功能)

server 段里多加以上這一條,前端的反向代理的工作就完成了。

(當然要開啟反向代理在 nginx.conf 里)以上捕捉到圖片格式結尾的就將這種請求轉發到伺服器地址,後含衡遲端伺服器只要監聽這個埠將 root 指向資源目錄就行了。

當這一切做完後會發攔型現,後端伺服器獲取到的並不是用戶的 ip 地址而是前端伺服器的 ip (通過 nginx 的訪問日誌),這是正常的。

因為本來就是前段請求的,但是可以通過 proxy_set_header 段將用戶的真實ip帶到後端伺服器去,而後端伺服器需要接收傳過來的這個參數。

日誌的格式默認情況下是不接收這種參數的,日誌格式在 nginx.conf 裡面定義,默認沒有定義,自己加上去就可以了。

這就是日誌的格式,可以自己添加和修改,上面主要描述的是定義一個格式這個格式的名字為main。

這個格式里包含了哪些東西順序是怎樣的,定義訪問成功的日誌的路徑,使用main格式來進行寫入。

改完後,前端伺服器 nginx -s reload ,後端伺服器 nginx -s reopen 。

反向代理就是這樣。有反向代理,當然也有正向代理了,也很簡單。

原文鏈接: nginx反向代理和後端伺服器獲取真實ip-伺服器

熱點內容
桿編程式 發布:2025-03-09 14:39:23 瀏覽:433
java怎麼實現緩存 發布:2025-03-09 14:37:37 瀏覽:805
中國艦艇訪問 發布:2025-03-09 14:37:27 瀏覽:565
android實現http 發布:2025-03-09 14:28:03 瀏覽:433
php依賴注入 發布:2025-03-09 14:20:57 瀏覽:335
解壓軟體就 發布:2025-03-09 14:20:52 瀏覽:116
linuxflashchrome 發布:2025-03-09 14:06:57 瀏覽:96
海賊王怎麼緩存 發布:2025-03-09 14:05:35 瀏覽:588
解壓多久過戶 發布:2025-03-09 13:53:48 瀏覽:90
資料庫求商 發布:2025-03-09 13:53:39 瀏覽:657