nginx使用set_real_ip_from获取用户的真实IP地址

nginx使用set_real_ip_from获取用户的真实IP地址

前言

因公司Nginx现在方案也只是主备模式,利用keeplive+nginx方式实现主备故障切换。但这模式可能造成资源浪费,于是打算利用硬件lvs实现双活,但是验证过程获取不到用户真实ip地址。于是通过查看Nginx官方说明进行配置验证:https://nginx.org/en/docs/http/ngx_http_realip_module.html

过程

查看nginx支持模块

查看nginx是否存在with-http_realip_module模块,默认情况下不会构建此模块,应重新编译configuration 添加 --with-http_realip_module 参数启用它。

./configure --with-http_realip_module

修改nginx.conf参数

http 模块添加如下参数:

set_real_ip_from  192.168.1.0/24; #上一层代理IP地址
set_real_ip_from  192.168.2.1; #上一层代理IP地址
set_real_ip_from  2001:0db8::/32; #上一层代理IP地址
real_ip_header    X-Forwarded-For; # 是指从接收到报文的哪个http首部去获取前代理传送的用户ip
real_ip_recursive on; # 是否递归地排除直至得到用户ip(默认为off) 

主要这种方式只能支持在7层HTTP协议生效,如果是4层TCP协议暂时无解。

测试验证

location /test {
    return 200 "$http_x_forwarded_for\n$remote_addr\n$proxy_add_x_forwarded_for\n$server_addr\n$host\n$proxy_protocol_addr\n$proxy_add_x_forwarded_for";
}

参考

1.https://www.cnblogs.com/chenjw-note/p/10785181.html

2.https://nginx.org/en/docs/http/ngx_http_realip_module.html

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇