首先,在前端nginx上需要做如下配置:
站在用戶的角度思考問題,與客戶深入溝通,找到東陽網(wǎng)站設(shè)計與東陽網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋東陽地區(qū)。
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會在把請求轉(zhuǎn)向后臺real-server前把http報頭中的ip地址進行替換;這樣操作完成后,real-server也需要做一些操作;
public class ClientIPUtils {
/**
* 在很多應(yīng)用下都可能有需要將用戶的真實IP記錄下來,這時就要獲得用戶的真實IP地址,在JSP里,獲取客戶端的IP地
* 址的方法是:request.getRemoteAddr(),這種方法在大部分情況下都是有效的。但是在通過了Apache,Squid等
* 反向代理軟件就不能獲取到客戶端的真實IP地址了。
* 但是在轉(zhuǎn)發(fā)請求的HTTP頭信息中,增加了X-FORWARDED-FOR信息。用以跟蹤原有的客戶端IP地址和原來客戶端請求的服務(wù)器地址。
* @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;
}
}
您好,.X.XXX.XXX系列IP,而這個函數(shù)獲取的是局域網(wǎng)網(wǎng)關(guān)出口的IP地址,如果訪問者使用代理服務(wù)器,將不獲取代理服務(wù)器的IP,而是獲取訪問者網(wǎng)關(guān)的真實IP。如果將這個函數(shù)應(yīng)用到限IP訪問的網(wǎng)頁中,別人即使通過限IP訪問段中的代理服務(wù)器,也不能訪問該頁面。
下面提供一個函數(shù):?php
// 定義一個函數(shù)getIP()
function getIP(){global $ip;
if (getenv("HTTP_CLIENT_IP"))
$ip = getenv("HTTP_CLIENT_IP");
else if(getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if(getenv("REMOTE_ADDR"))
$ip = getenv("REMOTE_ADDR");else$ip = "Unknow";
return $ip;}
// 使用方法:
echo getIP();?
getenv("REMOTE_ADDR")用來取得客戶端的 IP 地址,但如果客戶端是使用代理服務(wù)器來訪問,那取到的就是代理服務(wù)器的 IP 地址,而不是真正的客戶端 IP 地址。要想透過代理服務(wù)器取得客戶端的真實 IP 地址,就要使用 getenv("HTTP_X_FORWARDED_FOR") 來讀取。
但是如果客戶端沒有通過代理服務(wù)器來訪問,那么用getenv("HTTP_X_FORWARDED_FOR") 取到的值將是空的。
else if(getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
表示如果getenv("HTTP_X_FORWARDED_FOR") 取到的值存在不為空(即客戶端使用代理服務(wù)器的情況下),則變量$ip等于getenv("HTTP_X_FORWARDED_FOR") 取到的真實IP值。
如果上面的else if(getenv("HTTP_X_FORWARDED_FOR"))取得的值為空(即沒有使用代理服務(wù)器),則不會執(zhí)行下面的$ip = getenv("HTTP_X_FORWARDED_FOR");這一行語句。
這種情況下已經(jīng)確認客戶端沒有使用代理服務(wù)器,從而通過
else if(getenv("REMOTE_ADDR"))
這兩行語句獲得客戶端的IP地址也是真實的IP地址。
在服務(wù)器中要查看端口,可以使用Netstat命令:
1、依次點擊“開始→運行”,鍵入“cmd”并回車,打開命令提示符窗口。
2、在命令提示符狀態(tài)下鍵入“netstat -a -n”,按下回車鍵后就可以看到以數(shù)字形式顯示的TCP和UDP連接的端口號及狀態(tài)。
Netstat命令用法如下:
命令格式:Netstat -a -e -n -o -s-an
-a 表示顯示所有活動的TCP連接以及計算機監(jiān)聽的TCP和UDP端口。
-e 表示顯示以太網(wǎng)發(fā)送和接收的字節(jié)數(shù)、數(shù)據(jù)包數(shù)等。
-n 表示只以數(shù)字形式顯示所有活動的TCP連接的地址和端口號。
-o 表示顯示活動的TCP連接并包括每個連接的進程ID(PID)。
-s 表示按協(xié)議顯示各種連接的統(tǒng)計信息,包括端口號。
-an 查看所有開放的端口
遠程連接錯誤。
1、檢查服務(wù)器的網(wǎng)絡(luò)連接情況,關(guān)閉防火墻或者安全軟件,可以讓網(wǎng)絡(luò)注冊到正常的端口上。
2、檢查jar包中的配置文件,確保jar包正確地設(shè)置了遠程連接的IP地址和端口號,且運行正確的程序。
3、檢查jar包的各個組件,確保它們能夠正常工作,如數(shù)據(jù)庫、緩存、網(wǎng)絡(luò)等組件。
4、可以重新部署jar包,確保jar包能夠正常運行。
分享題目:安全jar包獲取服務(wù)器ip地址 獲取jar包中的文件路徑
分享地址:http://www.rwnh.cn/article28/doggccp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計、標簽優(yōu)化、網(wǎng)站策劃、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)