nginx獲取真實(shí)的ip的方法
我這里使用是springboot項目,使用nginx做代理,但header里面的參數(shù)沒有將ip帶過來,所有需要配置nginx將ip帶過來。
nginx.conf文件
server {
listen 80;
listen 443 ssl;
server_name xxx.xxx.com;
ssl_certificate /web/project/ai-master/ssl/xxx.xxx.com_bundle.pem;
ssl_certificate_key /web/project/ai-master/ssl/xxx.xxx.com.top.key;
#接口
location /api {
#保留代理之前的host 包含客戶端真實(shí)的域名和端口號
proxy_set_header Host $host;
#保留代理之前的真實(shí)客戶端ip
proxy_set_header X-Real-IP $remote_addr;
#這個Header和X-Real-IP類似,但它在多級代理時會包含真實(shí)客戶端及中間每個代理服務(wù)器的IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#表示客戶端真實(shí)的協(xié)議(http還是https)
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://aiMasterServer/api;
}
}RequestUtil.java文件
/**
* @Description:請求處理類
* @author: Adobe Chow
* @date: 2019/4/25 10:42
* @Copyright: www.winshang.com Inc. All rights reserved.
*/
public class RequestUtil {
public static HttpServletRequest getRequest(){
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
return request;
}
public static HttpServletResponse getResponse(){
HttpServletResponse response = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse();
return response;
}
/***
* 獲取客戶端IP地址;這里通過了Nginx獲取;X-Real-IP,
* @return
*/
public static String getClientIP() {
HttpServletRequest request = getRequest();
String ip = request.getHeader("X-Real-IP");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
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");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
}到此這篇關(guān)于nginx獲取真實(shí)的ip的方法的文章就介紹到這了,更多相關(guān)nginx獲取真實(shí)ip內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Nginx代理后如何獲取客戶端真實(shí)IP地址
- nginx經(jīng)過多層代理后獲取真實(shí)來源ip過程詳解
- 基于Nginx 反向代理獲取真實(shí)IP的問題詳解
- Nginx 獲取客戶端真實(shí)IP $remote_addr與X-Forwarded-For的實(shí)現(xiàn)
- nginx如何獲取用戶真實(shí)ip
- Nginx獲取客戶端真實(shí)IP(real_ip_header)的實(shí)現(xiàn)
- Nginx反向代理后無法獲取客戶端真實(shí)IP地址
- 基于nginx獲取代理服務(wù)ip以及客戶端真實(shí)ip詳解
- nginx獲取客戶端真實(shí)ip的常用方法
- Nginx獲取客戶端真實(shí)IP的原理及配置方法
- Nginx獲取IP地址變量的幾種方式
相關(guān)文章
詳解如何通過nginx進(jìn)行服務(wù)的負(fù)載均衡
負(fù)載均衡器可以將用戶請求根據(jù)對應(yīng)的負(fù)載均衡算法分發(fā)到應(yīng)用集群中的一臺服務(wù)器進(jìn)行處理,本文主要為大家詳細(xì)介紹了如何通過nginx進(jìn)行服務(wù)的負(fù)載均衡,需要的可以參考下2023-11-11
nginx配置前端請求轉(zhuǎn)發(fā)到指定的后端ip方式
文章主要解釋了Nginx配置中如何通過location規(guī)則將前端靜態(tài)資源和后端接口請求進(jìn)行分流,并詳細(xì)描述了請求轉(zhuǎn)發(fā)到后端的具體過程,包括rewrite規(guī)則、代理協(xié)議設(shè)置、請求頭透傳、代理地址指定及失敗重試機(jī)制等2026-05-05
Dockerfile打包nginx鏡像的實(shí)現(xiàn)步驟
本文主要介紹了Dockerfile打包nginx鏡像的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10
Nginx解決前后端分離架構(gòu)下的Session共享的幾種方法
本文主要介紹了Nginx解決前后端分離架構(gòu)下的Session共享的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-04-04
Nginx使用Lua模塊實(shí)現(xiàn)WAF的原理解析
waf是通過執(zhí)行一系列針對HTTP/HTTPS的安全策略來專門為Web應(yīng)用提供保護(hù)的一款產(chǎn)品,本文重點(diǎn)給大家介紹Nginx使用Lua模塊實(shí)現(xiàn)WAF的原理,需要的朋友參考下吧2021-09-09

