wordpress - Wordpress 永久链接 nginx 中的未授权错误
问题描述
所以我试图在 LEMP 上运行 wordpress。我确实通过添加这个来修复永久链接
location / {
try_files $uri $uri/ /index.php?$args;
}
但现在我遇到了未经授权的错误。进一步来说 -
A password is required to access this web server. Please try again.
我的虚拟服务器的配置文件
server {
server_name test.com www.test.com;
listen x.x.x.x;
listen 80;
#return 301 https://$host$request_uri;
}
server {
server_name test.com www.test.com;
listen x.x.x.x;
root /home/test/public_html;
index index.php;
access_log /var/log/virtualmin/test.com_access_log;
error_log /var/log/virtualmin/test.com_error_log;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME /home/test/public_html$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT /home/test/public_html;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param HTTPS $https;
access_log /var/log/nginx/test.com.access.log;
error_log /var/log/nginx/test.com.error.log;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
# Keep logging the requests to parse later (or to pass to firewall utilities such as fail2ban)
location ~ /\. {
deny all;
}
# Deny access to any files with a .php extension in the uploads directory
# Works in sub-directory installs and also in multisite network
# Keep logging the requests to parse later (or to pass to firewall utilities such as fail2ban)
location ~* /(?:uploads|files)/.*\.php$ {
deny all;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/php-nginx/156327396130368.sock/socket;
}
location / {
auth_basic off;
try_files $uri $uri/ /index.php?$args;
}
listen x.x.x.x:443 ssl;
ssl_certificate /home/test/ssl.cert;
ssl_certificate_key /home/test/ssl.key;
fastcgi_read_timeout 60;
}
PS :- 我正在使用虚拟分钟的预览站点功能
我尝试将 auth_basic off 添加到默认值以及每个站点配置。它只是行不通
解决方案
我们需要保护的目录
wp-includes 目录将始终如此命名。上传、主题和插件的目录默认是 wp-content 中的子文件夹(分别为 media、wp-content/themes 和 wp-content/plugins),但可以移动到其他地方。wp-content 目录本身也是如此。
哦,本页示例中的 access_log 和 log_not_found 语句只是为了不让我们的日志充满垃圾请求。如果要记录请求,请相应地删除语句。
阻止包含目录中的 PHP 文件
此位置应始终相同。
location ~* /wp-includes/.*.php$ {
deny all;
access_log off;
log_not_found off;
}
阻止内容目录中的 PHP 文件
该目录默认为/wp-content,但您可以轻松地将其定义为其他位置,例如通过简单地设置 WP_CONTENT_DIR/WP_CONTENT_URL 常量,因此相应地调整配置。
location ~* /wp-content/.*.php$ {
deny all;
access_log off;
log_not_found off;
}
阻止上传目录中的 PHP 文件
uploads 目录可能是也可能不是 wp-content 的子目录,并且可能已重命名为完全不同的名称,也可能未重命名。相应地调整配置。
location ~* /(?:uploads|files)/.*.php$ {
deny all;
access_log off;
log_not_found off;
}
文件部分用于默认的多站点/网络路径。您可以根据需要将其移除,但留在其中不会造成任何伤害。
插件和主题目录
我认为大多数人将主题和插件目录保留为内容目录中的子目录,但它们也可以轻松移动到其他地方。您为插件定义常量对 WP_PLUGIN_DIR/WP_PLUGIN_URL,并为主题使用函数 register_theme_directory() 来执行此操作。如果您也将插件和主题移出内容目录,请为它们添加类似的位置块。
如果您没有篡改插件或主题位置,请跳过此部分。
如果您将插件目录移动到例如 /modules:
location ~* /modules/.*.php$ {
deny all;
access_log off;
log_not_found off;
}
如果您将主题目录移动到例如 /skins:
location ~* /skins/.*.php$ {
deny all;
access_log off;
log_not_found off;
}
如果您同时使用两者,您应该能够以与我们对上述上传文件夹相同的方式组合它们。
阻止对 xmlrpc.php 的访问
如果您不需要 XML-RPC(您很可能不需要 - 只有在使用 Jetpack 或 WordPress 手机应用程序时才需要),您可以阻止对它的请求。尽管有些人声称 XML-RPC 不是使用它进行众所周知的攻击的罪魁祸首(尤其是参与使用 XML-RPC 的服务的人),但毫无疑问,您根本无法通过 XML-RPC 受到攻击如果你完全阻止它。所有 XML-RPC 请求都通过 xmlrpc.php 文件进行路由:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}
您现在已经减少了应用程序的公共表面,类似于在枪战中侧身站立:攻击者可以击中的易受攻击的表面现在要小得多。
推荐阅读
- sql - 列标题前写什么字母
- wso2 - 在 BPM 中使用 REST 端点调用 HTTPS 安全 REST 服务
- javascript - 我需要一种在文本中添加多个带有样式的标签的方法,同时跟踪它在 html 文本区域中的位置
- powershell - 如何在使用 powershell 成功提升后修复访问被拒绝错误消息
- docker - 如何在 docker 容器窗口中设置 SSH_AUTH_SOCK 环境变量
- excel - 在 Excel 中根据指定日期计算带有文本的列
- wordpress - 将 Container Div 添加到 WordPress 中的每个 Gutenberg-Block
- watson-openscale - 特定客户的预测解释
- azure - Azure 搜索中的文件格式检测
- symfony - 我们迁移不正确吗?从 Symfony 2.7 迁移到 4.0 的表单中没有进行验证