Nginx之服务端获取真实客户端IP

简介: Nginx之服务端获取真实客户端IP

服务端获取真实客户端IP,在日常项目中也常会出现这种需求,如果我们使用了反向代理服务,很有可能就在一些特殊的情况下就无法获取到真实的客户端IP;这个时候就需要我们在Nginx反向代理服务中加入一些配置来提供真实的客户端IP。

在配置之前,我们还要去讲一下Nginx中内置变量主要有哪些,分别有放置着什么样的值有什么样的作用。

nginx内置变量

$arg_name: 请求参数中的参数名称,如果?name=123,$arg_name取到的值就是name了。

$args: 请求参数中的参数值。

$content_length:请求头的content_length。

$content_type:请求头的content_type。

$cookie_name:cookie名称。

$hostname:主机名称。

$remote_addr:客户端地址,记住这个参数,一会我们就要用到了。

$remote_port:客户端端口。

$remote_user:用于http基础认证服务的用户名。

$request:代表客户端的请求地址。

$server_addr:服务器端地址。

$server_name:服务器端名称,例如域名。

$server_port:服务器端端口。

配置获取客户端真实IP

我们通常在Java后端获取客户端IP的方式是 request.getRemoteAddr(),但是如果我们使用了Nginx或者是其他的反向代理服务器。

就会导致这个方法取到的值不准确,甚至取不到,所以,我们就需要在反向代理服务器上做一些‘手脚’。

如何做呢,这时候就需要我们的nginx内置变量出场了,来看一下吧。

$remote_addr:客户端地址;

就是这个了,这个参数代表着你从客户端访问Nginx反向代理服务的地址,将这个参数传输给服务端就ok了。

配置如下:

server{
   .......这就不写了,只写重点。
   location / {
       proxy_set_header X-Real-IP $remote_addr;
       proxy_pass http:www.test.com;
   }
}

如此配置的话,我们就可以在后台利用request.getHeader('X-Real-IP')来获取了;


相关文章
|
6月前
|
应用服务中间件 nginx
树莓派安装Nginx服务结合内网穿透实现无公网IP远程访问
树莓派安装Nginx服务结合内网穿透实现无公网IP远程访问
|
6月前
|
运维 负载均衡 应用服务中间件
LNMP详解(九)——Nginx虚拟IP实战
LNMP详解(九)——Nginx虚拟IP实战
131 2
|
3月前
|
应用服务中间件 Linux nginx
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
|
3月前
|
应用服务中间件 持续交付 nginx
[nginx]借助nginx实现自动获取本机IP
[nginx]借助nginx实现自动获取本机IP
|
3月前
|
应用服务中间件 nginx 数据安全/隐私保护
nginx配置源IP访问控制
nginx配置源IP访问控制
|
4月前
|
开发框架 前端开发 应用服务中间件
部署基于.netcore5.0的ABP框架后台Api服务端,以及使用Nginx部署Vue+Element前端应用
部署基于.netcore5.0的ABP框架后台Api服务端,以及使用Nginx部署Vue+Element前端应用
|
5月前
|
Java 应用服务中间件 API
springboot+nginx获取真实IP
springboot+nginx获取真实IP
|
6月前
|
监控 数据可视化 安全
如何查找访问 Nginx 的前 10 个 IP?
【5月更文挑战第1天】
137 1
如何查找访问 Nginx 的前 10 个 IP?
|
6月前
|
域名解析 弹性计算 应用服务中间件
基于nginx反向代理实现OSS固定域名IP访问
本文基于阿里云OSS手册:https://help.aliyun.com/zh/oss/use-cases/use-an-ecs-instance-that-runs-centos-to-configure-a-reverse-proxy-for-access-to-oss,继续深入讨论如何利用nginx反向代理,实现固定的IP/域名访问OSS bucket。官方文档能够解决大部分的反向代理固定IP访问oss bucket的场景,但是对于必须使用域名作为endpoint的系统,会出现signatrue鉴权问题。本文继续在官方文档的基础上,将反向代理需要域名作为endpoint的场景补齐方案。
|
6月前
|
Ubuntu 应用服务中间件 Linux
nginx 配置代理ip访问https的域名配置
nginx 配置代理ip访问https的域名配置
1058 2