當前位置:首頁 » 雲伺服器 » 獲取nginx代理伺服器的地址

獲取nginx代理伺服器的地址

發布時間: 2022-10-10 00:38:48

⑴ nginx 怎麼列印代理伺服器的ip地址

server {
listen 8000;
server_name testhost alias another.alias;
location / {
root "D:\site";
index index.html index.htm;
}
}

⑵ 不容錯過的Nginx配置詳解,一文帶你搞懂Nginx

Nginx是一個高性能的HTTP和反向代理伺服器,特點是佔用內存少,並發能力強,事實上Nginx的並發能力確實在同類型的網頁伺服器中表現好。Nginx專為性能優化而開發,性能是其最重要的考量,實現上非常注重效率,能經受高負載的考驗,有報告表明能支持高達50000個並發連接數。

需要客戶自己在瀏覽器配置代理伺服器地址

例如:在大陸訪問www.google.com,我們需要一個代理伺服器,我們通過代理伺服器去訪問谷歌,這個過程就是正向代理。

反向代理,客戶端對代理是無感知的,因為客戶端不需要任何配置就可以訪問,我們只需要將請求發送到反向代理伺服器,由反向代理伺服器去選擇目標伺服器獲取數據後,在返回給客戶端,此時反向代理伺服器和目標伺服器對外就是一個伺服器,暴露的是代理伺服器地址,隱藏了真實伺服器IP地址。

單個伺服器解決不了,我們增加伺服器的數量,然後將請求分發到各個伺服器上,將原先請求集中到單個伺服器上的情況改為將請求分發到多個伺服器上,將負載分發到不同的伺服器,也就是我們說的負載均衡。

為了加快網站的解析速度,可以把動態頁面和靜態頁面由不同的伺服器來解析,加快解析速度。降低原來單個伺服器的壓力。

進入到下面的目錄,然後使用命令

配置文件所在位置:/usr/local/nginx/conf/nginx.conf

由全局塊+events塊+http塊組成

從配置文件開始到events之間的內容,主要會設置一些影響Nginx伺服器整體運行的配置指令,主要包括配置運行Nginx伺服器的用戶(組)、允許生成的worker process數,進程pid存放路徑、日誌存放路徑和類型以及配置文件的引入等。

events塊設計的指令主要影響Nginx伺服器與用戶的網路連接,常用的設置包括是否開啟對多work process下的網路連接進行序列化,是否允許同時接收多個網路連接,選取哪種事件驅動模型來處理連接請求,每個work process可以同時支持的最大連接數等。下面的例子表示每個work process支持的最大連接數為1024。這部分配置對Nginx的性能影響較大,在實際中應該靈活配置。

Nginx伺服器配置中最頻繁的部分,代理、緩存和日誌定義等絕大多數功能和第三方模塊的配置都在這里,http塊又包括http全局塊和server塊。

http全局塊配置的指令包括文件引入、MIME-TYPE定義、日誌自定義、連接超時時間、單鏈接請求數上限等。

這塊和虛擬主機有密切關系,虛擬主機從用戶角度看,和一台獨立的硬體主機是完全一樣的,該技術的產生是為了節省互聯網伺服器硬體成本。

每個http塊可以包括多個server塊,而每個server塊就相當於一個虛擬主機。

每個server塊也可以分為全局server塊,以及可以同時包含多個location塊。

最常見的配置時本虛擬主機的監聽配置和本虛擬主機的名稱或IP配置。

一個server塊可以配置多個location塊。

這塊的主要作用是基於Nginx伺服器接收到的請求字元串(例如server_name/uri-string),對虛擬主機名稱(也可以是IP別名)之外的字元串(例如前面的/uri-string)進行匹配,對特定的請求進行處理。地址定向、數據緩存和應答控制等功能,還有許多第三方模塊的配置也在這里進行。

訪問http://ip,訪問到的是Tomcat的主頁面http://ip:8080。

Nginx+JDK8+Tomcat

訪問:http://192.168.71.167/,看到的是Tomcat的首頁。

根據訪問的路徑跳轉到不同的伺服器中去。

訪問http://ip:9001/e 直接跳到http://127.0.0.1:8080/e

訪問http://ip:9001/vod 直接跳到http://127.0.0.1:9090/vod

Nginx+JDK8+配置兩個Tomcat,Tomcat的配置不再講述。

訪問http://192.168.71.167:9001/e/a.html跳到了http://127.0.0.1:8080/e/a.html頁面。

訪問http://192.168.71.167:9001/vod/a.html跳到了http://127.0.0.1:9090/vod/a.html頁面。

假如Nginx代理伺服器Server的配置為:192.168.71.167:9001,跳到:127.0.0.1:8080,訪問者的IP為:192.168.71.200:20604。

通過訪問http://192.168.71.167/e/a.html,實現負載均衡的效果,平均分攤到8080和8081埠中。

Nginx+JDK8+2台Tomcat,一台8080,一台8081。

訪問:http://192.168.71.167/e/a.html,8080和8081交替訪問。

1 輪詢(默認)

每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。

2 weight

weight代表權重,默認為1,權重越高被分配的客戶端越多。

指定輪詢幾率,weight和訪問比率成正比,用於後端伺服器性能不均的情況。

3 ip_hash

每個請求按訪問IP的hash結果分配,這樣每個訪客固定訪問一個後端伺服器,可以解決session的問題,示例如下:

4 fair(第三方)

按後端伺服器的響應時間來分配請求,響應時間短的優先分配。

訪問圖片:http://192.168.71.167/image/1.jpg

訪問頁面:http://192.168.71.167/www/a.html

訪問目錄:http://192.168.71.167/image/(因為設置了autoindex on;)

兩台機器,每台機器都裝有keepalived+Nginx+Tomcat。

主備keepalived伺服器中只有master一台機器會出現VIP地址,否則會出現腦裂問題。

【提示】腳本要加+x的執行許可權:chmod +x chk_nginx.sh

在Nginx里把虛擬IP配置進去即可。

一個Nginx是由一個master進程和多個worker進程組成的。

客戶端發送請求到Master,然後給worker,再由這些work爭搶處理這個請求。

1 可以使用nginx -s reload進行熱部署方式;

2 每個worker是獨立的進程,如果有其中的一個worker出現了問題,其他worker獨立的繼續進行爭搶,實現請求的過程,不會造成服務的中斷;

Nginx和Redis類似,都採用了io多路復用機制。每個worker進程都可以把CPU發揮到極致,一般來說worker數和伺服器的CPU數相等是最為適宜的。

發送請求:訪問靜態資源佔用2個連接,反向代理佔用4個連接。

【溫馨提示】

⑶ 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

首先,在前端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

首先,在前端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代理的伺服器

1.1 反向代理初印象
反向代理(Reverse Proxy)方式是指以代理伺服器來接受Internet上的連接請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給Internet上請求連接的客戶端,此時代理伺服器對外就表現為一個伺服器。

從上圖可以看出:反向代理伺服器位於網站機房,代理網站Web伺服器接收Http請求,對請求進行轉發。
1.2 反向代理的作用
①保護網站安全:任何來自Internet的請求都必須先經過代理伺服器;

②通過配置緩存功能加速Web請求:可以緩存真實Web伺服器上的某些靜態資源,減輕真實Web伺服器的負載壓力;

③實現負載均衡:充當負載均衡伺服器均衡地分發請求,平衡集群中各個伺服器的負載壓力;

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

/**
* 獲取當前網路ip
* @param request
* @return
*/
public String getIpAddr(HttpServletRequest request){
String ipAddress = request.getHeader("x-forwarded-for");
if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("Proxy-Client-IP");
}
if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("WL-Proxy-Client-IP");
}
if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getRemoteAddr();
if(ipAddress.equals("127.0.0.1") || ipAddress.equals("0:0:0:0:0:0:0:1")){
//根據網卡取本機配置的IP
InetAddress inet=null;
try {
inet = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
ipAddress= inet.getHostAddress();
}
}
//對於通過多個代理的情況,第一個IP為客戶端真實IP,多個IP按照','分割
if(ipAddress!=null && ipAddress.length()>15){ //"***.***.***.***".length() = 15
if(ipAddress.indexOf(",")>0){
ipAddress = ipAddress.substring(0,ipAddress.indexOf(","));
}
}
return ipAddress;
}

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

nginx做反向負載均衡,後端伺服器獲取真實客戶端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;

}
}

熱點內容
怎麼把伺服器的ip固定了 發布:2025-01-12 03:55:42 瀏覽:578
php伺服器開發 發布:2025-01-12 03:55:35 瀏覽:672
軟體自製編程 發布:2025-01-12 03:54:00 瀏覽:534
j2ee和java的區別 發布:2025-01-12 03:42:44 瀏覽:581
android6小米 發布:2025-01-12 03:38:35 瀏覽:85
redis與資料庫 發布:2025-01-12 03:20:21 瀏覽:211
怎麼升級安卓100 發布:2025-01-12 03:19:37 瀏覽:516
c語言倒數 發布:2025-01-12 03:14:37 瀏覽:929
如何免費激活行動電話卡安卓 發布:2025-01-12 03:10:27 瀏覽:89
2020凱越精英配置什麼樣 發布:2025-01-12 03:08:02 瀏覽:685