站长帮2023年WordPress网站优化日志:配置Nginx加强保护系统文件、禁止垃圾爬虫访问

站长帮网站基本上每年都会至少进行一次较大幅度的优化,主要包括主机配置环境升级优化、数据库清理优化、网站前端优化等。今年的优化工作依然由本人(想做文盲)来实施,将优化内容和效果分享出来的目的是希望能帮助更多新手站长们。

站长帮网站概述

当前的这版网站已运行了三年多了,在站长帮的各位小伙伴们细心呵护下,一直稳定运行,访问量也节节攀升。

婷婷(站长帮成员)一直在提议网站改版,但由于这一段时间以来大家的空闲时间太少,搁置了很久,但小幅度改进我们从未停过。(就算改版也依然会沿用GeneratePress主题)

站长帮现运行的环境为:Nginx + PHP v7.4 + MySQL v5.7 + Redis v7.0.5 + WordPress v6.11 + GeneratePress v3.2.4 。

站长帮网站使用的插件清单(2023):

底层优化日志

Change

更新运行环境

  • 将 PHP 版本更新为 7.4.33
  • MySQL 升级至 5.7.40
  • Redis 升级至 7.0.5
  • Nginx 升级至 1.22.1
  • 优化 Nginx 配置文件(详见下方说明)
站长帮

Nginx 配置文件优化部分详解

用正则匹配部分垃圾爬虫并禁止访问,直接返回403:

# 屏蔽垃圾爬虫
if ($http_user_agent ~* (Scrapy|DotBot|python-requests)) {
	return 403;
}

通过Nginx配置加强保护WordPress系统文件:

# BEGIN 保护系统文件
	location = /wp-admin/install.php { deny all; }
	location = /nginx.conf { deny all; }
	location ~ ^/user_extention/ { deny all; }
	location ~ /\.htaccess$ { deny all; }
	location ~ /readme\.html$ { deny all; }
	location ~ /readme\.txt$ { deny all; }
	location ~ ^/wp-config.php$ { deny all; }
	location ~ ^/wp-admin/includes/ { deny all; }
	location ~ ^/wp-includes/[^/]+\.php$ { deny all; }
	location ~ ^.*/\.git/.*$ { deny all; }
	location ~ ^.*/\.svn/.*$ { deny all; }
	# 禁用 Uploads 目录的 PHP
	location ~ ^/wp\-content/uploads/.*\.(?:php[1-7]?|pht|phtml?|phps)$ { deny all; }
	# 禁用 Plugins 目录的 PHP
	location ~ ^/wp\-content/plugins/.*\.(?:php[1-7]?|pht|phtml?|phps)$ { deny all; }
	# 禁用 Themes 目录的 PHP
	location ~ ^/wp\-content/themes/.*\.(?:php[1-7]?|pht|phtml?|phps)$ { deny all; }
	# 禁用一些文件扩展名
	location ~ .*\.(ini|zip|7z|rar|tar|gz|sql|conf|bak|asp|aspx|jsp)?$ { return 404; }
# END 保护系统文件

前端优化

GenerateBlocks 今年发布的新版改变了前端块的设计思路,启用了全新的 Container 块,更新后可以用更少的 HTML 提供更多的可能性。

我们以前使用 GenerateBlocks 的时候就觉得它的HTML和CSS稍有点重复,所以大多块用额外的自制CSS,现在将这部分去掉,全站的自定义块已迁移至 GenerateBlocks 1.7.x 新架构。

Perfmatters 插件的2.0.6版带来了精简的Analytics v4统计代码,经测试非常完美,已替换 Analytics v4 默认统计代码。

将原来的关键路径CSS优化,变更为 移除未使用的 CSS 优化。如果没有 WP Rocket 授权码的用户可以使用 Perfmatters 插件的 Remove Unused CSS 功能。

Perfmatters 的这个功能与 WP Rocket 虽然不完全相同,但也非常优秀。

WP Rocket 会对每个页面与帖子都分别提取已使用的CSS,然后生成对应的CSS文件,未使用的CSS不会再加载。

而 Perfmatters 则对每个页面提取已使用的CSS,并生成对应的CSS文件。对所有帖子仅提取一个最新发布的,并生成对应的CSS文件。一般情况下,所有帖子加载的CSS是一样的(模板相同),所以这也没什么问题。而且 Perfmatters 提供了选项,可以将未使用的CSS推迟加载,这样即保证了首屏加载速度,又不会出现CSS兼容性问题。

优化效果展示

Lightthouse 测试评分
Lightthouse 测试评分
Google 检查结果
Google 检查结果
百度抓取诊断
百度抓取诊断
THE END