解决网站404页面返回200状态码问题

好久没打理博客,突然收到 CDN 流量预警,发现平均每天 40G 流量消耗!what?就现在这个访问量,不存在的。看了下 CDN 日志发现有小人一直在请求博客页面,其中被请求最多的就是 CCkiller 防御工具那个文章地址。

呵呵,我就写一个简单的防御小工具,惹着你啦?实际上我用了 CDN,也并没有安装这个工具,所以想试探、想测试效果的麻烦自己去安装使用,攻击我博客毫无意义,挂了又能怎么样?

废话就扯这么多,进入正题。解决网站404页面返回200状态码问题

看日志的时候,我发现有大量请求到了博客其实并不存在的地址,但是返回码居然是 200??这就不正常了,于是手工访问了一下一个不存在的页面,虽然 WordPress 在前台给我展示了一个 404 页面,但是浏览器显示返回码确实是 200!!纳尼?

还以为 WordPress 更新后改了这个机制呢,把主题下的 404.php 加了一个强行的 404 返回码,发现没有任何效果。

最后发现,居然是自己以前把 404 页面静态化留下的坑!

原因很简单,当时经常有人攻击一些不存在的页面,也就是每次都是动态的 404,服务器自然就容易高负载,因此做了一个静态化处理:

通过 curl 请求一个不存在的地址,触发 404 返回内容,然后保存在网站的某个目录下,比如 xxxx 下面:

然后,在 Nginx Vhost 下新增 404 响应规则:

重启 Nginx 之后,再访问不存在的博客页面的时候,Nginx 就直接返回 404.html 的内容了,从而实现 404 页面的静态化。

但是,Nginx 这里我写错了,导致每次返回 404.html 都是 200 返回码!!这样其实会误导搜索引擎的判断,以为页面是存在的。。。。大坑。

正确的 Nginx 配置方法应该是:

也就是不用等号,而是用空格!修改后,重启 Nginx,然后访问不存在的地址发现已经是 404 返回码了,问题解决!

目前评论:13   其中:访客  13   博主  0

  1. 飞鸟 4 来自天朝的朋友 谷歌浏览器 Windows 7 广东省珠海市 电信

    张戈大佬诈尸啦 :grin:

  2. 蒲公英 0 来自天朝的朋友 谷歌浏览器 Windows 10 浙江省温州市 电信

    捉到一只断更大佬

  3. 楚狂人 2 来自天朝的朋友 谷歌浏览器 Windows 7 山东省潍坊市 联通

    哈哈,好久没更新,突然写一篇,很惊喜

  4. 简单生活 2 来自天朝的朋友 谷歌浏览器 Windows 7 中国 移动

    诈尸更新… 板凳是我的…

  5. BanYuner 4 来自天朝的朋友 谷歌浏览器 Windows 10 湖北省武汉市 电信

    之前也是出现了这样的情况,不断访问站点不存在的问题,可惜当时没有看到这篇文章

  6. 技术宅 4 来自天朝的朋友 火狐浏览器 Windows 10 江苏省南京市 电信

    哇,终于更新了,每天来看一下,终有所获。哈哈哈。 :razz:

  7. 龙笑天 5 来自天朝的朋友 火狐浏览器 Windows 7 广东省深圳市宝安区 电信

    :lol: 估计是别人想试试你那个防御 练练手吧~~

  8. 沈唁志 3 来自天朝的朋友 谷歌浏览器  Build/OPM1.171019.011 陕西省西安市 联通

    日常围观,这个我一会也去改改

  9. 青山 3 来自天朝的朋友 谷歌浏览器 Windows 7 江西省萍乡市 电信

    之前关掉了评论,是在申请公安备案吗

  10. 范明明 0 来自天朝的朋友 谷歌浏览器 Windows 10 内蒙古包头市 包钢电信

    这个只是让恶意刷流量的攻击返回了404页面,万一攻击转向了已存在的页面呢?这个要怎么防?这个月月初我也遇到攻击了!

  11. 闲鱼 1 来自天朝的朋友 谷歌浏览器 Windows 10 湖南省常德市 电信

    又学习到了

  12. qq昵称 2 来自天朝的朋友 火狐浏览器 Windows 7 福建省泉州市 电信

    张戈大佬居然更新了,每天都有许多大量访问不存在的地址(cc),也就是404页面,流量高达几十G。请问大佬,这个应该怎么解决呢?

  13. 明月登楼 6 来自天朝的朋友 谷歌浏览器 Windows 7 河南省南阳市 联通

    难得看到博主更新了!

加载中,请稍候...

文章过于久远,评论已关闭!