全球灰产交流论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

全球云38元起免备案V2EX搬瓦工灰产
SEO查询超级PING网站测速
Virmach特价鸡乌云漏洞吾爱破解
查看: 161|回复: 9

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

[复制链接]

144

主题

458

回帖

1750

积分

金牌会员

Rank: 6Rank: 6

积分
1750
发表于 2024-7-17 14:28:29 | 显示全部楼层 |阅读模式
20230417
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搞懵逼了,特来问问吊打的干灰产的。。。
hostloc邀请码购买+tg:@Sendtoae86bot
回复

使用道具 举报

21

主题

904

回帖

2549

积分

金牌会员

Rank: 6Rank: 6

积分
2549
发表于 2024-7-17 14:29:41 | 显示全部楼层
chatgpt出来,这里有客户投诉你的回答不清楚
hostloc邀请码购买+tg:@Sendtoae86bot
回复 支持 反对

使用道具 举报

0

主题

130

回帖

398

积分

中级会员

Rank: 3Rank: 3

积分
398
发表于 2024-7-17 14:33:44 | 显示全部楼层
接入cf后想禁止某个ip就用cfapi或者cf的防火Q禁止,denyip应该就是cdn后的实际ip
hostloc邀请码购买+tg:@Sendtoae86bot
回复 支持 反对

使用道具 举报

144

主题

458

回帖

1750

积分

金牌会员

Rank: 6Rank: 6

积分
1750
 楼主| 发表于 2024-7-17 14:35:15 | 显示全部楼层
Ducker69 发表于 2024-7-17 14:33
接入cf后想禁止某个ip就用cfapi或者cf的防火Q禁止,denyip应该就是cdn后的实际ip ...

我不明白的是,deny IP这里的IP,到底是回源IP(比如cf的IP),还是访客的真实IP?
hostloc邀请码购买+tg:@Sendtoae86bot
回复 支持 反对

使用道具 举报

3

主题

2901

回帖

6223

积分

论坛元老

Rank: 8Rank: 8

积分
6223
发表于 2024-7-17 14:33:00 | 显示全部楼层
igoogle 发表于 2024-7-17 14:35
我不明白的是,deny IP这里的IP,到底是回源IP(比如cf的IP),还是访客的真实IP? ...

我的理解是回源ip
hostloc邀请码购买+tg:@Sendtoae86bot
回复 支持 反对

使用道具 举报

7

主题

290

回帖

835

积分

高级会员

Rank: 4

积分
835
发表于 2024-7-17 14:38:30 | 显示全部楼层
本帖最后由 打酱油的 于 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。
hostloc邀请码购买+tg:@Sendtoae86bot
回复 支持 反对

使用道具 举报

144

主题

458

回帖

1750

积分

金牌会员

Rank: 6Rank: 6

积分
1750
 楼主| 发表于 2024-7-17 14:35: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 的 ...

还是干灰产的靠谱,沙雕chatgpt一会儿说东,一会儿说西。。。
hostloc邀请码购买+tg:@Sendtoae86bot
回复 支持 反对

使用道具 举报

5

主题

157

回帖

557

积分

高级会员

Rank: 4

积分
557
发表于 2024-7-17 14:54:08 | 显示全部楼层
igoogle 发表于 2024-7-17 20:12
还是干灰产的靠谱,沙雕chatgpt一会儿说东,一会儿说西。。。

……不要被误导了,nginx的realip模块会修改$remote_addr,所以access模块deny的就是cf通过xff回传的真实客户端ip
hostloc邀请码购买+tg:@Sendtoae86bot
回复 支持 反对

使用道具 举报

144

主题

458

回帖

1750

积分

金牌会员

Rank: 6Rank: 6

积分
1750
 楼主| 发表于 2024-7-17 20:12:00 | 显示全部楼层
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回源了。
hostloc邀请码购买+tg:@Sendtoae86bot
回复 支持 反对

使用道具 举报

0

主题

2

回帖

8

积分

新手上路

Rank: 1

积分
8
发表于 2024-7-17 14:54:00 | 显示全部楼层
本帖最后由 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;
}
}
hanada 发表于 2024-7-17 22:45
可以用geo+if来做

geo $realip_remote_addr $is_cf_ip {

网上搜了一圈,加上反复询问chatgpt一晚上,就你这个答案是正确的。。
真是被gpt这人工智障气死。。
hostloc邀请码购买+tg:@Sendtoae86bot
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

展开

QQ|Archiver|手机版|小黑屋|全球灰产交流论坛

GMT+8, 2024-10-23 14:21 , Processed in 0.089313 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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