服务器遭遇 CC 攻击,用 Fail2ban 自动封禁恶意 IP
早上起来发现博客打不开了,登进终端一看,Load Average 飙到了 15。top 命令一看,Nginx 进程占了 99% 的 CPU。 用 tail -n 100 /var/log/nginx/access.log 一看,某个段的海外 IP 正在以每秒几百次的频率狂刷我的查询接口,典型的 CC 攻击。虽然带宽没被打满,但后端查询接口扛不住这么高的并发,服务器直接卡死了。 ...
早上起来发现博客打不开了,登进终端一看,Load Average 飙到了 15。top 命令一看,Nginx 进程占了 99% 的 CPU。 用 tail -n 100 /var/log/nginx/access.log 一看,某个段的海外 IP 正在以每秒几百次的频率狂刷我的查询接口,典型的 CC 攻击。虽然带宽没被打满,但后端查询接口扛不住这么高的并发,服务器直接卡死了。 ...
数据库备份这件事,说起来容易,真要做好还挺考验耐心的。我之前就吃过亏:有一次手滑删错表,结果发现最近的备份是一周前的,中间的数据全丢了。从那以后,我对数据库备份就特别上心。 ...
手里有一台极其廉价的 1核 1G 内存的 VPS,跑了一个 WordPress。最近只要稍微有点访问量,系统就会因为内存耗尽触发 OOM,直接把数据库进程杀掉,导致网页报 “Error establishing a database connection”。 ...
我的博客是用 Hugo 生成的静态站点,生成之后就是一堆 HTML、CSS、JS 和图片文件。这种静态站点最适合用 Nginx 直接托管,速度快、配置简单、资源占用低。 ...
本来在查资料,结果发现自己博客图片刷不出来了。看了一下账单,好家伙,CDN 流量半小时跑了 5G。 日志拉下来一分析,某个爬虫正在丧心病狂地遍历下载我博客所有的附件目录,而且 User-Agent 伪装成了正常的 Chrome 浏览器,靠封 UA 根本封不掉。 ...
今天在给一个前后端分离的项目配置 Nginx 反代时,前端控制台一片红,全都是 CORS Error。前端的请求发到了 api.example.com,而后端服务跑在 localhost:8080,域名不一样,浏览器的同源策略就把请求拦截了。 ...
刚开始用 Docker 的时候,我写了一大串 docker run 命令,参数又多又乱,后来想改个端口或者加个环境变量,得翻半天历史记录。自从换成 Docker Compose 之后,部署和管理容器变得舒服多了。 ...
我手起刀落用 docker run 跑了一个 PHP 应用的容器,又用 docker run 跑了一个 MySQL 的容器。在配置 PHP 连数据库时,我填了 MySQL 容器的名称 db_mysql,结果死活报错:Unknown MySQL server host 'db_mysql'。 ...