ip反向代理
① 如何取得nginx做反向代理時的真實IP
如果正確編譯和配置了nginx反向代理,當只有一層nginx反向代理時,可以通過「HTTP_X_REAL_IP」取得回client的真實答IP。
如果有二層nginx反向代理,則client的真實IP被包含在「HTTP_X_FORWARDED_FOR」中。
最不可信的是「REMOTE_ADDR」,它的內容完全可以被client指定!總之只要編譯和配置正確,「HTTP_X_FORWARDED_FOR」總是包含了client的真實IP。
② 如何取得nginx做反向代理時的真實IP
1、在Dock中點擊「系統偏好設置」,進入到系統偏好設置界面。
2、在「互聯網與無線」選項下,找到並點擊「網路」這個設置。
③ 如何取得nginx做反向代理時的真實IP
測試程序代來碼(後續測試基源於它):
// g++ -g -o hello.cgi hello.cpp
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Content-Type: text/html; charset=utf-8\r\n\r\n");
printf("<p>HTTP_X_FORWARDED_FOR: %s\n", getenv("HTTP_X_FORWARDED_FOR"));
printf("<p>HTTP_X_REAL_IP: %s\n", getenv("HTTP_X_REAL_IP"));
printf("<p>REMOTE_ADDR: %s\n", getenv("REMOTE_ADDR"));
printf("<p>");
return 0;
}
測試是在nginx自帶配置文件nginx.conf上進行的修改:
proxy_set_header可以添加在nginx.conf的http段,也可以是server段,還可以是location段,一級一級間是繼承和覆蓋關系。
④ 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;
}
}
⑤ 如何取得反向代理的真實IP
||取得反向代理的真實IP的方法有兩種:
一,public String getRemortIP(HttpServletRequest request)
if (request.getHeader("x-forwarded-for") == null)
return request.getRemoteAddr();
return request.getHeader("x-forwarded-for")。
二,
public String getIpAddr(HttpServletRequest request)
String ip = request.getHeader("x-forwarded-for");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
ip = request.getHeader("Proxy-Client-IP");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
ip = request.getHeader("WL-Proxy-Client-IP")。
⑥ nginx反向代理service name可以為ip嗎
被代理的伺服器可以是域名,可以是IP地址
如果是域名,則會進行dns解析後轉發到指定IP上,如果解析成多個IP地址,則會輪詢發送到後端伺服器
⑦ nginx 反向代理 配置域名和ip的區別
配域名的時候來,如果域名可以解析源成多個IP,則通常使用輪詢的方式訪問
配置ip,訪問就固定到那個IP上
如果域名只對應一個IP,則二者效果等效,但配置域名需要多一步域名解析的步驟
IP不變的情況下,配置成IP就可以了,如果IP會變,配置域名更好
⑧ 如何在Windows Nginx中實現訪問www.×××.com反向代理到本地內網ip。求一分具體的conf配置。
這個其實比較簡單,相比普通部署,只多了幾行代碼。我給個簡化的示例吧,是我伺服器上的。
http{
#upstream配置伺服器組
upstreamdebug{
server10.45.111.112:8083weight=8;
server10.45.111.114:8083weight=2;
ip_hash;
}
server{
listen80;
server_namedebug.com;
root/www/web;
indexindex.htmlindex.htmindex.php;
proxy_pass
proxy_set_headerHost$host;
proxy_set_headerX-Real-IP$remote_addr;
proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
}
}
⑨ 反向代理和IP代理有何區別
反向代理
方式是指以代理伺服器來接受internet上的連接請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連接的客戶端,此時代理伺服器對外就表現為一個伺服器。IP代理分游戲代理IP和移動代理IP,不知道你想問哪一種