如何在源站 nginx 设置 deny ip?

2019-01-27 10:34:30 +08:00
 xmlf

使用反向代理。

在前端 nginx http 中加入 deny ip 是正常的。

现在有需要,根据后端程序产生的 log,进行统计判断自动 deny ip。

后端获取用户真实 IP 地址都是正确的。。

在后端源站 nginx 中加入 deny ip 不起作用。

请各位大佬指教。。

如何在后端源站 nginx 中 deny ip ?

4298 次点击
所在节点    NGINX
15 条回复
zjlletian
2019-01-27 10:52:52 +08:00
前端 nignx 加上 xff,后端通过 xff 判断客户端 ip
pubby
2019-01-27 10:54:40 +08:00
换个思路,不要 deny,直接返回 404
xmlf
2019-01-27 11:00:00 +08:00
@zjlletian 后端日志和程序获取用户 ip 没任何问题,deny ip 不起作用
xmlf
2019-01-27 11:01:30 +08:00
@pubby 如何自动批量实现?
AlisaDestiny
2019-01-27 11:45:13 +08:00
nginx 加入 deny ip 相当于修改了配置文件,要生效需要 reload.
firebroo
2019-01-27 12:58:36 +08:00
用 lua 在 nginx 实现 deny 逻辑,deny 数据存 redis
xmlf
2019-01-27 14:32:30 +08:00
@AlisaDestiny 当然 reload 了
xmlf
2019-01-27 14:33:36 +08:00
@firebroo ……要这么复杂吗?没什么简便些方法吗?
zjlletian
2019-01-27 15:49:16 +08:00
@xmlf 你为啥非要 deny ip 呢,自己写一下 if 规则不行么。。。 如果非要 deny,那你前端就不能用七层负载均衡,改用 lvs 可以正确获取用户 ip。
xmlf
2019-01-27 16:10:17 +08:00
@zjlletian 如果用 if 规则,可以通过脚本自动增加 IP 或者移除 IP 吗?求赐教
xmlf
2019-01-27 16:45:52 +08:00
@zjlletian 我现在思路是,前端从后端源站 wget deny.conf 文件,保存在前端后 nginx reload
firebroo
2019-01-27 19:45:35 +08:00
lua 不复杂啊,几行代码
willis
2019-01-27 19:46:40 +08:00
最前端不开 realip,传 xff 到后端,后端 nginx 用 realip 模块 ,把 XFF 设置成 remote addr,后端就能用 deny ip 了,
不过还是建议用 lua + redis,好处是可以按需,不用 reload
popvlovs
2019-01-28 11:27:08 +08:00
lua + redis 比较方便,OpenResty 了解一下
ducklyl
2019-01-28 11:46:36 +08:00
nginx+lua+redis,在 lua 中过滤禁止 IP.把 IP 列表存入 redis,这样效率较高。可实时验证。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/530954

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX