PHP 如何应对较高并发, 1 秒钟 3000-5000 次

2017-07-13 16:11:20 +08:00
 tianxiacangshen
流量不是很多,每天 12000 ip 32000pv,但是这几天有些坏人一直在发动并发访问,对方找到网站上的所有 post 之后,利用几个 ip 不断访问 post 页面,一秒钟 3000-5000 次,添加了验证码,但是验证码好像失效了,这样没达到攻击级别,但是却让 cpu 长期 100%,导致网站很卡。

这种情况怎么办?
5884 次点击
所在节点    PHP
29 条回复
GG668v26Fd55CP5W
2017-07-13 22:09:47 +08:00
@a570295535 这种前端的限制只能防君子防不了小人……
xiaoz
2017-07-14 08:09:01 +08:00
@yylzcom 我之前用 ng+f2 对 http 有效,对 https 的网站无效,有遇到过吗?
yylzcom
2017-07-14 08:14:22 +08:00
@xiaoz #22 我只做了 http 的,原理是自建 fail2ban 的 filter 来读取 nginx 的日志,建议要从 nginx 的日志入手看看吧。如果确定 fail2ban 的 filter 能对应到 nginx 日志里的条目但是无效,那就是玄学了……
glouhao
2017-07-14 08:26:09 +08:00
@falcon05 都是小人吧,能防笨小人就是了
Betacoefficient
2017-07-14 08:33:33 +08:00
@glouhao 你说的对,有些人就是这样坏。
msg7086
2017-07-14 08:40:57 +08:00
rate limit 配合 fail2ban 真的够用了。
xiaoz
2017-07-14 08:47:23 +08:00
@yylzcom 我看 f2 的日志中是匹配出了 IP 的,但是未对 IP 屏蔽。
yylzcom
2017-07-14 08:50:03 +08:00
@xiaoz #27 检查你的 fail2ban 的自定义 filter 里的 action 等号后面
[iptables[name=xxx, port=http, protocol=tcp]
看看修改 port 为 https 试试看?
leekafai
2017-07-14 21:06:25 +08:00
web server 直接斩 ip 吧,增大 d 站成本说不定别人觉得没好处就收了。

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

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

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

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

© 2021 V2EX