全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 1295|回复: 10
打印 上一主题 下一主题

关于nginx回源IP和访客真实IP

[复制链接]
跳转到指定楼层
1#
发表于 2024-7-17 14:28:29 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
nginx中,

使用
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
来获取访客真实IP,


但是,
deny ip;
allow ip;

这里的IP依然是指回源IP,而不是访客真实IP,

我的理解正确吗?

比如网站套了cf,如果只允许cf IP回源,用allow cloudflare IP加上deny all即可;
但是如果要禁止某个特定IP访问网站,deny ip是没有意义的。。。

我的理解正确吗?

被chatgpt搞懵逼了,特来问问吊打的mjj。。。
11#
 楼主| 发表于 2024-7-17 23:30:32 | 只看该作者
hanada 发表于 2024-7-17 22:45
可以用geo+if来做

geo $realip_remote_addr $is_cf_ip {

网上搜了一圈,加上反复询问chatgpt一晚上,就你这个答案是正确的。。
真是被gpt这人工智障气死。。
10#
发表于 2024-7-17 22:45:22 | 只看该作者
本帖最后由 hanada 于 2024-7-17 22:46 编辑
igoogle 发表于 2024-7-17 21:57
你说的对,我刚才测试了,在配置了realip模块之后,$remote_addr传递的就是访客的真实IP,而不是cf或者前 ...


可以用geo+if来做

geo $realip_remote_addr $is_cf_ip {
  xxxx/xx 1;
  xxxx/xx 1;
  xxxx/xx 1;
  ...
  default 0;
}

server {
....
if ( $is_cf_ip != 1 ) {
  return 444;
}
}
9#
 楼主| 发表于 2024-7-17 21:57:42 | 只看该作者
hanada 发表于 2024-7-17 21:37
……不要被误导了,nginx的realip模块会修改$remote_addr,所以access模块deny的就是cf通过xff回传的真实 ...

你说的对,我刚才测试了,在配置了realip模块之后,$remote_addr传递的就是访客的真实IP,而不是cf或者前置代理的IP。

所以,如果配置了realip模块,就不能够再通过allow 和 deny来设置只允许cf IP回源了。
8#
发表于 2024-7-17 21:37:47 来自手机 | 只看该作者
igoogle 发表于 2024-7-17 20:12
还是mjj靠谱,沙雕chatgpt一会儿说东,一会儿说西。。。

……不要被误导了,nginx的realip模块会修改$remote_addr,所以access模块deny的就是cf通过xff回传的真实客户端ip
7#
 楼主| 发表于 2024-7-17 20:12:00 | 只看该作者
打酱油的 发表于 2024-7-17 14:54
https://www.opshub.cn/2024-05-22/nginx-get-the-real-ip-for-access-control-zw5foy-1413.html

Nginx 的 ...

还是mjj靠谱,沙雕chatgpt一会儿说东,一会儿说西。。。
6#
发表于 2024-7-17 14:54:08 | 只看该作者
本帖最后由 打酱油的 于 2024-7-18 10:01 编辑

https://www.opshub.cn/2024-05-22/nginx-get-the-real-ip-for-access-control-zw5foy-1413.html

Nginx 的 access 模块在进行访问控制时,默认使用的是$remote_addr​变量,该变量表示客户端的真实IP地址。如果 Nginx服务器 前面有还代理或负载均衡,那么$remote_addr​取得的则是上一跳设备的IP。

结合你的场景,你用 access 模块做访问控制,并不能直接拒绝或者允许某个真实IP,因为 $remote_addr​ 取到的是上一跳设备IP,即CDN边缘节点IP,而不是真实IP。

需要用 ngx_http_realip_module​ 模块来获取并替换 $remote_addr​ 变量的值为真实的客户端 IP。
5#
发表于 2024-7-17 14:38:30 | 只看该作者
igoogle 发表于 2024-7-17 14:35
我不明白的是,deny IP这里的IP,到底是回源IP(比如cf的IP),还是访客的真实IP? ...

我的理解是回源ip
4#
 楼主| 发表于 2024-7-17 14:35:15 | 只看该作者
Ducker69 发表于 2024-7-17 14:33
接入cf后想禁止某个ip就用cfapi或者cf的防火墙禁止,denyip应该就是cdn后的实际ip ...

我不明白的是,deny IP这里的IP,到底是回源IP(比如cf的IP),还是访客的真实IP?
3#
发表于 2024-7-17 14:33:44 | 只看该作者
接入cf后想禁止某个ip就用cfapi或者cf的防火墙禁止,denyip应该就是cdn后的实际ip
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-11-14 16:33 , Processed in 0.115688 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表