我有一个 wordpress 网站,它在 cloudflare DNS 后面的 Nginx 上运行。我在 nginx.conf 中对所有 cloudflare ips 使用了“set_real_ip_from”。当我尝试访问我的网站时,我可以在日志中看到我的真实 ip。我已将默认的 wordpress 管理员登录目录从 wp-admin 更改为我的目录名称。我只希望允许特定 ips 登录我的 wordpress,但在我的网站配置中,服务器块:location ~ /(wp-admin|wp-login|mydirectory) { allow my.real.ip; deny all; return 404; }
我似乎无法访问 wordpress 管理员,并且出现 404。如果我删除此块,一切都会正常,所以我猜我输入错了?我在这个论坛上查看了一些不同的变体,但似乎都没有用。它们要么允许我访问 wp-admin,但任何人都可以访问,要么阻止所有人。
编辑 不幸的是,无论我怎么尝试,我都无法让它工作,所以我删除了位置 ~ /(wp-admin|wp-login|mydirectory) 块,重新加载了 nginx 配置,登录到 wordpress,禁用了 wp-admin 更改目录插件,然后返回并重新添加了位置 ~ /(wp-admin|wp-login|mydirectory) 块,在其中我添加了位置 ~ .php$ {,正如 @Michael Hampton 所建议的那样,现在我可以使用“wp-admin”url 访问我的 wordpress 管理页面。不知道为什么它不适用于自定义 url,但我猜这样应该可以,因为 nginx 会阻止任何其他人尝试访问它,但知道为什么它不起作用会很有趣 :/
答案1
您之所以会得到 404 错误代码,是因为您特意要求所有匹配该代码的请求都获得 404 错误代码location
。
return 404;
如果您希望收到 404 以外的任何信息,则需要删除此语句。
此外,您需要location
在其中放置一个嵌套location
来处理 PHP 文件。
location ~ /(wp-admin|wp-login|mydirectory) {
...
location ~ .php$ {
....