Wordpress Nginx 安全最佳实践
Wordpress Nginx Security Best Practice
我正在考虑从 Apache 切换到 Nginx,我正在努力确定 WordPress 特定安全指令需要什么。到目前为止,我发现的几乎所有特定于 WordPress 的东西都会破坏 wp-admin,破坏内容布局,给出 ajax 错误或更多错误。
两个最常见的建议似乎是:ethanpil/wp-secure.conf and digital ocean。
有什么建议或更好的资源吗?
谢谢
安德鲁
我已经将安全的 WordPress NGINX 配置的基本部分放在一起,here。
最安全的方法是 白名单 可以通过 PHP 解释器 运行 的文件,并使用 HTTP 拒绝对所有其他文件的请求状态 404.
location / {
# any URI without extension is routed through PHP-FPM (WordPress controller)
location ~ ^[^.]*$ {
length_hiding on;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
include includes/php-example.com.conf;
}
# allow only a handful of PHP files in root directory to be interpreted
# wp-cron.php ommited on purpose as it should *not* be web accessible, see proper setup
# https://www.getpagespeed.com/web-apps/wordpress/wordpress-cron-optimization
location ~ ^/wp-(?:links-opml|login|mail|signup|trackback)\.php$ {
length_hiding on;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include includes/php-example.com.conf;
}
# other PHP files "do not exist"
location ~ \.php$ {
return 404;
}
}
最后,在 /wp-content/
下禁用任何 PHP 执行是至关重要的:
location /wp-content/ {
# contents under wp-content are typically highly cacheable
immutable on;
# hide and do not interpret internal plugin or user uploaded scripts
location ~ \.php$ {
return 404;
}
}
如果您觉得必须将一些脚本作为 /wp-content/some.php
URI 启动,您可能有一个需要删除的错误插件,或者(很少)白名单,如果 运行 宁通过PHP-FPM.
我正在考虑从 Apache 切换到 Nginx,我正在努力确定 WordPress 特定安全指令需要什么。到目前为止,我发现的几乎所有特定于 WordPress 的东西都会破坏 wp-admin,破坏内容布局,给出 ajax 错误或更多错误。
两个最常见的建议似乎是:ethanpil/wp-secure.conf and digital ocean。
有什么建议或更好的资源吗?
谢谢
安德鲁
我已经将安全的 WordPress NGINX 配置的基本部分放在一起,here。
最安全的方法是 白名单 可以通过 PHP 解释器 运行 的文件,并使用 HTTP 拒绝对所有其他文件的请求状态 404.
location / {
# any URI without extension is routed through PHP-FPM (WordPress controller)
location ~ ^[^.]*$ {
length_hiding on;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
include includes/php-example.com.conf;
}
# allow only a handful of PHP files in root directory to be interpreted
# wp-cron.php ommited on purpose as it should *not* be web accessible, see proper setup
# https://www.getpagespeed.com/web-apps/wordpress/wordpress-cron-optimization
location ~ ^/wp-(?:links-opml|login|mail|signup|trackback)\.php$ {
length_hiding on;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include includes/php-example.com.conf;
}
# other PHP files "do not exist"
location ~ \.php$ {
return 404;
}
}
最后,在 /wp-content/
下禁用任何 PHP 执行是至关重要的:
location /wp-content/ {
# contents under wp-content are typically highly cacheable
immutable on;
# hide and do not interpret internal plugin or user uploaded scripts
location ~ \.php$ {
return 404;
}
}
如果您觉得必须将一些脚本作为 /wp-content/some.php
URI 启动,您可能有一个需要删除的错误插件,或者(很少)白名单,如果 运行 宁通过PHP-FPM.