博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nginx 教程- 获取真实IP模块 - http_realip_module
阅读量:6713 次
发布时间:2019-06-25

本文共 1507 字,大约阅读时间需要 5 分钟。

hot3.png

有这么一情况,某网站静态文件很多,而且用户访问的来源有网通,有电信,有铁通...设置还有国外。

为了令处于不同网络运营商的用户收取静态文件的速度都有良好的体现,该网站分别在这些不同运营商的积分中部署了Squid,然后统一 Proxy 到主站的 Nginx 上,形成分布式缓存架构。

如果单是这样的话,主站上 Nginx 的日志,或者应用所获得的IP来源,始终都只会是各个机房中 Squid 的IP。而不是用户的真实IP。Apache 的话,能通过以上所提到的mod_rpaf解决。当然,强大的 Nginx 也有自己的看家法宝。

Nginx 有个在编译时默认不加载的模块 http_realip_module ,就是用来实现这一功能。

但网上很多作者对这一模块的理解完全错误,以为是 Proxy 参数里头的 proxy_set_header 。

proxy_set_header 用于向后端转发 IP head,这一参数是位于 proxy_module  模块中的,而并非 http_realip_module .

好多的博主写文章的时候,都把这模块的用途写成了“为后端应用提供 realip ”

Nginx 官方 wiki 对于该模块的说明 http://wiki.nginx.org/NginxHttpRealIpModule

“It is useful if nginx works behind some proxy of L7 load balanver, and request come from local IP, but proxy add request header with client's IP.

This module isn't built by default, enable it with the configure option ”

说简单了,就是 Nginx 的 http_realip_module = Apache 的 mod_rpaf 用于接受前端发来的 IP head 信息,从获取到真是的用户IP。

配置方式相当简单,重新编译 Nginx 加上 --with-http_realip_module 参数,如:

./configure --prefix=/opt/nginx --with-http_stub_status_module  --with-pcre=../pcre-6.6 --with-http_realip_module

make
make install

怎么?Nginx 的服务正在跑着?要重启不容易?

简单,原来你的 Nginx 装在哪,重新编译的时候就选哪,直接 make install 进去就会把原来的覆盖掉。

然后执行 Killall -s USR2 nginx 即可平滑升级。

编辑 Nginx.conf

在 location 里头插入

set_real_ip_from  192.168.1.0/24;    指定接收来自哪个前端发送的 IP head 可以是单个IP或者IP段

set_real_ip_from  192.168.2.1;  
real_ip_header    X-Real-IP;        IP head  的对应参数,默认即可。

配置跟 mod_rpaf  大致相同!

配置完成后 sbin/nginx -t 测试语法

测试无误执行 Killall -s HUP nginx 平滑加载配置。

这么就无间断完成了Nginx这一模块的加载。

转载于:https://my.oschina.net/ydsakyclguozi/blog/638996

你可能感兴趣的文章
AlloyTouch实现下拉刷新
查看>>
Wiki工具使用感悟
查看>>
云因成本高昂屡被关注,上云的价值是什么?
查看>>
深入探索JVM自动资源管理
查看>>
Go现在接受来自GitHub PR的补丁
查看>>
Sonatype收购Vor Security,扩展对Nexus开源组件的支持
查看>>
Spark作为ETL工具与SequoiaDB的结合应用
查看>>
Steve Thair谈DevOps on Windows的演变与面临的挑战
查看>>
过去一年,被我们“高估”的技术清单
查看>>
传承or创新 ?解密分布式数据库自研修炼之路
查看>>
TOP 13大最热开源微服务Java框架
查看>>
想知道垃圾回收暂停的过程中发生了什么吗?查查垃圾回收日志就知道了!
查看>>
案例学习:Jigsaw模块化迁移
查看>>
ASP.NET 2.2 Preview 1首次支持Java SignalR客户端
查看>>
Netty 源码分析之 零 磨刀不误砍柴工 源码分析环境搭建
查看>>
[deviceone开发]-动画示例源码
查看>>
温故js系列(13.1)-有意思的30题_题目
查看>>
实现iOS图片等资源文件的热更新化(一): 从Images.xcassets导出合适的图片
查看>>
以打字形式展示placeholder的插件
查看>>
WebComponent魔法堂:深究Custom Element 之 标准构建
查看>>