开发者社区> 科技探索者> 正文

nginx $remote_addr 详解

简介:
+关注继续查看

nginx的自带变量 $remote_addr 代表客户端的IP


remote_addr代表客户端的IP,但它的值不是由客户端提供的,而是服务端根据客户端的ip指定的,当你的浏览器访问某个网站时,假设中间没有任何代理,那么网站的web服务器(Nginx,Apache等)就会把remote_addr设为你的机器IP,如果你用了某个代理,那么你的浏览器会先访问这个代理,然后再由这个代理转发到网站,这样web服务器就会把remote_addr设为这台代理机器的IP。



但是实际场景中,我们即使有代理,也需要将$remote_addr设置为真实的用户IP,以便记录在日志当中,当然nginx是有这个功能,但是需要编译的时候添加--with-http_realip_module 这个模块,默认是没有安装的。


#这个模块允许从请求标头更改客户端的IP地址值,默认为关


忽略x_forwarded_for

其实,当你使用了Nginx的realip模块后,就已经保证了remote_addr里设定的就是客户端的真实IP,再看下这个配置

上面的配置就是把从192.168.100.0这一网段过来的请求全部使用X-Forwarded-For里的头信息作为remote_addr

1
2
set_real_ip_from  192.168.100.0/24;
real_ip_header     X-Forwarded-For;


它就是把x_forwarded_for设为remote_addr,而nginx里的x_forwarded_for取的就是其中第一个IP。

使用这些设置就能保证你的remote_addr里设定的一直都是客户端的真实IP,而x_forwarded_for则可以忽略了





提示:

nginx -V 可以查看到的编译参数和编译的模块(静态和动态)


没有这个模块  ngixn配置文件中是不识别set_real_ip_from   192.168.100.0/24; 这个指令的


最简单测试的的就是:

 --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module



模拟当然就很简单了

客户端:

curl -I bbs.test.com  -H 'X-Forwarded-For: 2.2.2.2' 

代理看到的remote_addr 会是"2.2.2.2"


ngixn server看到的也是2.2.2.2 


有client nginx-proxy  ngixn-server   curl -I bbs.test.com 这样就可以测试了。

本文转自残剑博客51CTO博客,原文链接http://blog.51cto.com/cuidehua/1827244如需转载请自行联系原作者


cuizhiliang

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【宝塔部署SpringBoot前后端不分离项目】含域名访问部署、数据库、反向代理、Nginx等配置
【宝塔部署SpringBoot前后端不分离项目】含域名访问部署、数据库、反向代理、Nginx等配置
70 0
谷粒学苑项目实战(十):使用Nginx配置请求转发
之前前端的请求端口为8001,可是现在我们又多了8002端口,后面还会有8003、8004……,如何让前端能够请求这么多的端口呢? 也许我们可以写多个BASE_API,分别对应多个端口,可是在vue框架中许多地方都要用到BASE_API,这样修改的地方太多。 这就需要用到Nginx的请求转发了。
30 0
Nginx:配置HTTPS网址加上绿锁头
Nginx:配置HTTPS网址加上绿锁头
35 0
Linux系统中安装Nginx并完成相关配置
Linux系统中安装Nginx并完成相关配置
37 0
【Nginx】Windows平台下配置Nginx服务实现负载均衡
系统环境:win10 测试用的开发环境和服务类型:VS2022 + DotNet 6 + WebApi
40 0
常见的Nginx配置错误原理分析及其危害
常见的Nginx配置错误原理分析及其危害
45 0
nginx负载均衡配置(简单快速)
还在等什么,快来一起讨论关注吧,公众号【八点半技术站】,欢迎加入社群
38 0
Nginx 负载均衡配置(实战教程)
还在等什么,快来一起讨论关注吧,公众号【八点半技术站】,欢迎加入社群
47 0
配置Nginx虚拟主机(二)
⭐本文介绍⭐ 在企业信息化应用环境中,安全性不仅取决于硬件防护设备,系统加固、访问控制等基本措施,而且如何减少故障中断时间,提高存储及北方的完善性也是确保企业信息安全的重要措施。本文将进一步学习服务器缓存加速、高可用/负载均衡群集、服务器集中监控等高级安全应用。后续课程将采用最小化安装的CentOS7.3系统,安装系统时勾选"开发工具"选项,以此为基础搭建实现环境。
111 0
配置Nginx虚拟主机(一)
⭐本文介绍⭐ 在企业信息化应用环境中,安全性不仅取决于硬件防护设备,系统加固、访问控制等基本措施,而且如何减少故障中断时间,提高存储及北方的完善性也是确保企业信息安全的重要措施。本文将进一步学习服务器缓存加速、高可用/负载均衡群集、服务器集中监控等高级安全应用。后续课程将采用最小化安装的CentOS7.3系统,安装系统时勾选"开发工具"选项,以此为基础搭建实现环境。
61 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载