當前位置:首頁 » 雲伺服器 » 獲取nginx伺服器ip

獲取nginx伺服器ip

發布時間: 2022-02-07 13:00:15

Ⅰ nginx 能獲取到真實ip嗎

http://blog.csdn.net/bigtree_3721/article/details/72820081希望能幫到你

Ⅱ 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做反向代理時的真實IP

對於client -> nginx reverse proxy -> apache,

要想在程序中取得真實的IP,在執行nginx的configure時,必須指定參數「--with-http_realip_mole」,示例:

./configure --prefix=/data/nginx --with-http_realip_mole --with-stream --with-pcre=/tmp/X/pcre-8.32 --with-openssl=/tmp/X/openssl-1.0.2a

Ⅳ 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做反向代理負載均衡 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做反向代理負載均衡 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做反向代理負載均衡 Java怎麼獲取後端伺服器獲取用戶IP

proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
打開你的nginx.conf文件,找到類似配置項,核對一下是否有以上幾個配置,以上配置中第2、3兩行是解決你的問題的配置。

加入這兩行,在java中就可以通過request.getRemoteHost()或其它方法取到客戶端用戶的入站IP,否只能取nginx伺服器的ip。

Ⅸ nginx如何獲取自己的ip

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

熱點內容
電信級伺服器電腦 發布:2024-11-15 09:26:27 瀏覽:246
壓縮某個文件夾 發布:2024-11-15 09:03:11 瀏覽:891
網址能解壓嗎 發布:2024-11-15 08:54:09 瀏覽:933
python更改目錄 發布:2024-11-15 08:41:08 瀏覽:265
伺服器快閃記憶體可以裝在一般電腦上嗎 發布:2024-11-15 08:36:46 瀏覽:8
安卓手機怎麼查詢自己的路線軌跡 發布:2024-11-15 08:32:19 瀏覽:969
phpdatet 發布:2024-11-15 08:32:17 瀏覽:507
HDB3編解碼實驗 發布:2024-11-15 08:17:31 瀏覽:212
怪星球編程 發布:2024-11-15 08:15:55 瀏覽:844
慧編程價格 發布:2024-11-15 08:14:09 瀏覽:459