首先,在前端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;
}
}
您好,.X.XXX.XXX系列IP,而這個函數獲取的是局域網網關出口的IP地址,如果訪問者使用代理服務器,將不獲取代理服務器的IP,而是獲取訪問者網關的真實IP。如果將這個函數應用到限IP訪問的網頁中,別人即使通過限IP訪問段中的代理服務器,也不能訪問該頁面。
下面提供一個函數:?php
// 定義一個函數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 地址,但如果客戶端是使用代理服務器來訪問,那取到的就是代理服務器的 IP 地址,而不是真正的客戶端 IP 地址。要想透過代理服務器取得客戶端的真實 IP 地址,就要使用 getenv("HTTP_X_FORWARDED_FOR") 來讀取。
但是如果客戶端沒有通過代理服務器來訪問,那么用getenv("HTTP_X_FORWARDED_FOR") 取到的值將是空的。
else if(getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
表示如果getenv("HTTP_X_FORWARDED_FOR") 取到的值存在不為空(即客戶端使用代理服務器的情況下),則變量$ip等于getenv("HTTP_X_FORWARDED_FOR") 取到的真實IP值。
如果上面的else if(getenv("HTTP_X_FORWARDED_FOR"))取得的值為空(即沒有使用代理服務器),則不會執行下面的$ip = getenv("HTTP_X_FORWARDED_FOR");這一行語句。
這種情況下已經確認客戶端沒有使用代理服務器,從而通過
else if(getenv("REMOTE_ADDR"))
這兩行語句獲得客戶端的IP地址也是真實的IP地址。
在服務器中要查看端口,可以使用Netstat命令:
1、依次點擊“開始→運行”,鍵入“cmd”并回車,打開命令提示符窗口。
2、在命令提示符狀態下鍵入“netstat -a -n”,按下回車鍵后就可以看到以數字形式顯示的TCP和UDP連接的端口號及狀態。
Netstat命令用法如下:
命令格式:Netstat -a -e -n -o -s-an
-a 表示顯示所有活動的TCP連接以及計算機監聽的TCP和UDP端口。
-e 表示顯示以太網發送和接收的字節數、數據包數等。
-n 表示只以數字形式顯示所有活動的TCP連接的地址和端口號。
-o 表示顯示活動的TCP連接并包括每個連接的進程ID(PID)。
-s 表示按協議顯示各種連接的統計信息,包括端口號。
-an 查看所有開放的端口
遠程連接錯誤。
1、檢查服務器的網絡連接情況,關閉防火墻或者安全軟件,可以讓網絡注冊到正常的端口上。
2、檢查jar包中的配置文件,確保jar包正確地設置了遠程連接的IP地址和端口號,且運行正確的程序。
3、檢查jar包的各個組件,確保它們能夠正常工作,如數據庫、緩存、網絡等組件。
4、可以重新部署jar包,確保jar包能夠正常運行。
分享題目:安全jar包獲取服務器ip地址 獲取jar包中的文件路徑
分享地址:http://m.2m8n56k.cn/article28/doggccp.html
成都網站建設公司_創新互聯,為您提供靜態網站、網站建設、品牌網站設計、標簽優化、網站策劃、商城網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯