1. 程式人生 > >nodejs+nginx獲取真實ip

nodejs+nginx獲取真實ip

nodejs + nginx獲取真實ip分為兩部分:

  • 第一、配置nginx;
  • 第二、通過nodejs程式碼獲取;

其他語言也是一樣的,都是配置nginx之後,在http頭裡面獲取“x-forwarded-for”.

第一、配置nginx

location / {
  proxy_set_header Host $http_host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://127.0.0.1:8360/;
}

第二nodejs獲取真實ip

//獲取ip(內網或外網)
var getIp = function(_http) {
	var ipStr = _http.headers['X-Real-IP'] || _http.headers['x-forwarded-for'];
	if (ipStr) {
		var ipArray = ipStr.split(",");
		if (ipArray || ipArray.length > 0) { //如果獲取到的為ip陣列
			return ipArray[0];
		}
	} else { //獲取不到時
		return _http.ip().substring(_http.ip().lastIndexOf(":") + 1);
	}
};

//獲取外網ip
var getNetIp = function(_http) {
	var ipStr = _http.headers['X-Real-IP'] || _http.headers['x-forwarded-for'];
	if (ipStr) {
		var ipArray = ipStr.split(",");
		if (ipArray.length > 1) { //如果獲取到的為ip陣列
			for (var i = 0; i < ipArray.length; i++) {
				var ipNumArray = ipArray[i].split(".");
				var tmp = ipNumArray[0] + "." + ipNumArray[1];
				if (tmp == "192.168" || (ipNumArray[0] == "172" && ipNumArray[1] >= 16 && ipNumArray[1] <= 32) || tmp == "10.7") {
					continue;
				}
				return ipArray[i];
			}
		}
		return ipArray[0];
	} else { //獲取不到時
		return _http.ip().substring(_http.ip().lastIndexOf(":") + 1);
	}
};

相關推薦

nodejs+nginx獲取真實ip

nodejs + nginx獲取真實ip分為兩部分: 第一、配置nginx; 第二、通過nodejs程式碼獲取; 其他語言也是一樣的,都是配置nginx之後,在http頭裡面獲取“x-fo

關於nginx獲取真實ip,proxy_set_head設置頭部信息的理解

代理模塊 真是ip 代理模塊 真是ip代理模塊 真是ip代理 $proxy_add_x_forwarded_for $http_x_forwarded_for這兩個的變量的值的區別,就在於,proxy_add_x_forwarded_for 比http_x_forwarded_for 多了一個$rem

Django Nginx反代 獲取真實ip

sts conf 獲取 pip style mon else 整數 real p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Andale Mono"; color: #28fe14; background-col

Nginx反向代理時tomcat日誌獲取真實IP

director div tom log sna tomcat XML localhost 如果 對於nginx+tomcat這種架構,如果後端tomcat配置保持默認,那麽tomcat的訪問日誌裏,記錄的就是前端nginx的IP地址,而不是真實的訪問IP。因此,需

nginx反向代理如何獲取真實IP

重啟 public p地址 format sudo con use gin 它的 由於客戶端和web服務器之間增加了中間層,因此web服務器無法直接拿到客戶端的ip,通過$remote_addr變量拿到的將是反向代理服務器的ip地址。 1、安裝--with-http_re

百度雲BLB後NGINX、TOMCAT獲取真實IP

BLB百度雲BLB後NGINX、TOMCAT獲取真實IP一、BLB後Nginx如何獲取真實IP前提:nginx作為slb獲取真實ip是使用 http_realip_module,默認一鍵安裝包安裝的nginx沒有安裝這個模塊需要重新重新編譯nginx並加裝。查看是否安裝此模塊:./nginx -V如沒有安裝此

Nginx反向代理 Laravel獲取真實IP地址(PHP)

代理 pro $1 通過 找到 但是 有一個 忘記 rust 使用VUE前後端分離開發 後端使用Laravel 想要獲取到用戶的真實IP地址 因為分離開發不同源跨域問題 所以只能進行前端Nginx反向代理 location /api { rewrite

nginx前端,tomcat後端伺服器獲取客戶的真實IP,包括tomcat訪問日誌獲取真實IP的配置

原文連結https://blog.csdn.net/teddy17/article/details/51744119 在安裝完以nginx+tomcat的WEB伺服器,使用預設的配置,會導致伺服器上的日誌檔案,只有nginx日誌能獲取到客戶的真實IP,而tomcat以及上面的JAVA WEB應用

Nginx獲取真實使用者IP

宣告:本文參考http://www.ttlsa.com/nginx/nginx-get-user-real-ip/並做了一些補充講解,希望會更加清晰明瞭~ 隨著nginx的迅速崛起,越來越多公司將apache更換成nginx. 同時也越來越多人使用nginx作為負載均衡, 並且代理前面可能還

Nginx負載均衡後Resin4獲取真實IP地址

  Resin在加了Nginx負載均衡後Resin訪問日誌中得到的ip為Nginx的ip,不是客戶端的真實ip,需要修改resin的配置檔案cluster-default.xml(resin 4): 1. 修改配置Nginx   在Nginx配置新增一個新的Header,用

nginx 反向代理使tomcat日誌中無法獲取真實IP-解決辦法

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

Nginx獲取真實IP

server { listen 80; server_name localhost; location /{ root html; index index.html index.htm;

Nginx反向代理Tomcat日誌獲取真實IP

Nginx 配置檔案,加入這行proxy_set_header X-Forwarded-For $remote_addr; Tomcat 的 server.xml, 做如下修改:<Valve className="org.apache.catalina.valves

nginx反向代理,node獲取真實IP

node的前端放了一個nginx做反向代理,結果 req.ip 始終取到nginx的IP,為了取得客戶端真實IP,需要做2件事: 1. 設定nginx轉發時加上http header 2. 在node

獲取請求主機IP地址,如果通過代理進來,則透過防火墻獲取真實IP地址

cas return ++ strip dex except servlet desc 請求 /** * 獲取請求主機IP地址,如果通過代理進來,則透過防火墻獲取真實IP地址; * @Title: getIpAddress * @Descr

獲取真實ip

for function span lod color array 服務 cti client public function ip() { if (getenv(‘HTTP_CLIENT_IP‘)) { $ip = ge

java 程式碼獲取真實IP

在開發工作中,我們常常需要獲取客戶端的IP。一般獲取客戶端的IP地址的方法是:request.getRemoteAddr();但是在通過了Apache,Squid等反向代理軟體就不能獲取到客戶端的真實IP地址了。 原因:由於在客戶端和服務之間增加了中間代理,因此伺服器無法直接拿到客戶端的IP,伺

多級反向代理java獲取真實IP地址

public static String getIpAddress(HttpServletRequest request){ String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.l

ASP.NET Core 搭配 Nginx真實IP問題

一.前言 Nginx(Engine X)是一個高效能HTTP和反向代理服務,是由俄羅斯人伊戈爾·賽索耶夫為訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0釋出於2004年10月4日。 如果你是一名 ASP.NET Core 開發人員,並且你的 ASP.NET Co

Java獲取真實IP地址

public String getRemortIP(HttpServletRequest request) { if (request.getHeader("x-forwarded-for") == null) { return request.getRemoteAddr(); } ret