Wordpress对于Apache是可以开箱即用的,包括伪静态规则都可以自动生成。但笔者依然喜欢用Nginx,本文将详细介绍Wordpress的Nginx伪静态规则与常规安全设置。
选择使用Nginx的理由
Nginx不仅有强大的配置功能,还有出色的静态资源响应速度。有人会认为Nginx并不是当前最快的WordPress WEB服务器,LiteSpeed才是。这没关系,因为最终的速度与稳定性取决于我们对它的熟悉程度以及如何使用它。
Nginx 早已经超越 Apache 称为全球用户最多的WEB服务器,所以任何人都可以非常方便的找到Nginx资料与资源,亦不必担心它与你的应用软件有兼容性问题。
Nginx伪静态规则
网上流传着多个WordPress的Nginx伪静态规则版本,但最终被WordPress与Nginx官方推荐的方案如下:
location / {
try_files $uri $uri/ /index.php?$args;
}
根据该伪静态规则,添加一些静态资源优化后的最终版本如下:
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# WordPress伪静态
location / {
try_files $uri $uri/ /index.php?$args;
}
# 静态资源优化
location ~* \.(js|css|webp|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|mp4|mp3)$ {
expires max;
log_not_found off;
access_log off;
}
Wordpress的Nginx常规安全设置
通过 Nginx 可以添加常用的HTTP安全标头,并禁止访问部分敏感内容等。
# BEGIN 安全标头
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy "no-referrer-when-downgrade";
# END 安全标头
还可以禁止访问部分敏感文件,示例如下:
# BEGIN 保护敏感文件
# 禁止一些文件扩展名
location ~ .*\.(ini|zip|7z|rar|tar|gz|sql|conf|bak|asp|aspx|jsp)?$ { deny all; }
location = /wp-admin/install.php { deny all; }
location = /wp-config.php { deny all; }
# END 保护敏感文件
访问如上禁止的文件扩展名或/wp-config.php等敏感文件时,将返回403错误。
伪静态规则加上安全设置合并后的最终配置
# WordPress Nginx伪静态规则与常规安全设置
# 由站长帮原创 https://www.zhanzhangb.cn/uncategorized/nginx-pseudo-static-and-security-settings.html
# BEGIN 保护敏感文件
# 禁止一些文件扩展名
location ~ .*\.(ini|zip|7z|rar|tar|gz|sql|conf|bak|asp|aspx|jsp)?$ { deny all; }
location = /wp-admin/install.php { deny all; }
location = /wp-config.php { deny all; }
# END 保护敏感文件
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# WordPress伪静态
location / {
# BEGIN 安全标头
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy "no-referrer-when-downgrade";
# END 安全标头
try_files $uri $uri/ /index.php?$args;
}
# 静态资源优化
location ~* \.(js|css|webp|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|mp4|mp3)$ {
add_header X-Content-Type-Options nosniff;
expires max;
log_not_found off;
access_log off;
}
对于一般用户,笔者推荐使用宝塔面板进行配置。仅需将上述最终代码复制到宝塔面板的伪静态里并保存即可,如下图:
