1

如何使用 Nginx Config 限制 WordPress wp-login.php 被公众访问。

我知道如何使用 htaccess 限制访问,但我如何在 Nginx 上做到这一点?

这是我尝试过的配置。

location /wp-login.php {
       auth_basic            "Restricted";
       auth_basic_user_file  /var/www/example.com/.htpasswd;
}

当我访问 wp-admin 时,可以下载整个 wp-login.php 文件。

有什么建议吗?

4

4 回答 4

4

对我有用——注意location ~* 没有

location ^~ /wp-login.php {
    auth_basic            "Restricted Area: WordPress";
    auth_basic_user_file  /home/path/to/passwords/.htpasswd;
}

当然,这是对 a 的补充location /wp-admin

我相信这是因为~*(4th)在Nginx 搜索顺序中低于^~(2nd)。

我确实想知道另一个包含文件中是否存在一个location ~ \.php$块导致 wp-login 块被忽略(总是值得检查您的主配置文件),但它似乎没有,并且重新排序文件对任何一种模式都没有影响.

于 2014-11-05T14:00:22.297 回答
1

您需要 auth 基本模块:

而且我认为您只能将其应用于目录:

location /wp-admin {
       auth_basic            "Restricted";
       auth_basic_user_file  /var/www/example.com/.htpasswd;
}

这仅在您安装了 apache 工具时才有效,如果没有,请参阅:http ://wiki.nginx.org/Faq#How_do_I_generate_an_htpasswd_file_without_have_Apache_tools_installed.3F

第二点;)

于 2012-10-09T13:07:37.707 回答
1

我在尝试阻止我的域上的 wp-login.php 时遇到了类似的问题。

我发现如果我不完全匹配文件名,它将正常工作。

最终为我工作的是:

location ~* (wp-login)\.php$ {
    auth_basic            "Restricted Area: WordPress";
    auth_basic_user_file  /home/path/to/passwords/.htpasswd;
}

此设置阻止我的浏览器下载登录文件并将其实际解析为 PHP。

于 2013-07-12T17:15:44.863 回答
0

我测试了不同的片段,但没有一个可以保护 wp-admin 和 wp-login.php。问题不仅仅在于保护。而是访问 wp-login.php。根据 .htpasswd 输入正确的凭据后,wp-login.php 页面作为附件下载。我无法登录。这个剪断为我完成了这项工作并保护了 wp-admin 和 wp-login.php:

## Protect my wordpress login page and directory with a password 
    location = /wp-login.php {
    auth_basic  "Login";
    include snippets/fastcgi-php.conf;
    auth_basic_user_file /etc/nginx/.htpasswd;
    fastcgi_pass unix:/run/php/php8.0-fpm.sock;
    }

我已经写了一个完整的答案。您可以在此页面上找到它。

于 2021-03-10T05:44:12.463 回答