我做错了什么导致收到 Loopback 和 REST API WordPress 错误?

我做错了什么导致收到 Loopback 和 REST API WordPress 错误?

我已经深入研究了自托管并在此过程中不断学习。我对其中的大部分内容都有了相当的了解。我只花了一天时间就拼凑出了一个“可以工作的” NGINX、MySQL、PHP、phpMyAdmin 和 SSL。我这样做纯粹是为了教育目的和乐趣。如果你愿意的话,可以把它当做一个游乐场。

版本信息在这里:

版本信息在这里

LetsEncrypt 通过 certbot 获取 SSL。主机是 Windows Server 2016 Standard 10.0.14393 x64。

我目前遇到了一些问题。

  • WordPress 错误:The REST API request failed due to an error: cURL error 28: Operation timed out after 10010 milliseconds with 0 bytes received (http_request_failed)
  • WordPress 错误:The loopback request to your site failed, this means features relying on them are not currently working as expected: cURL error 28: Operation timed out after 10008 milliseconds with 0 bytes received (http_request_failed)

我查看了一些日志,但还是搞不懂。我花了一整天时间尝试我遇到的随机事情。由于 WordPress 没有启用或安装任何插件,并且只安装并使用了一个主题(默认为 2020),因此我相信这是服务器配置的问题。作为参考,以下是 NGINX 使用的两个文件:

WordPress出现正常运行。但我更喜欢没有错误。我不确定问题出在哪里。任何帮助都将不胜感激。谢谢。

答案1

我已经解决了。它分为两部分。

运行curl -v example.com返回了初始配置失败。在进行了一些更改后,我设法获得了 200。这些更改针对 wordpress.conf 文件:

upstream php {
    server 127.0.0.1:9000;
}

server {
    listen 80;
    listen [::]:80;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name www.domain.com;

    # truncated conf
}

这里的关键部分是 ,wwwserver_name之前没有 。我的 DNS 记录不需要www。如果我删除,www请求将失败。这也解释了为什么当我www.example.com在 URL 框中输入时,我得到了 403。我的服务器设置不正确。现在它可以正确地将 的任何 URL 组合http/https或 的存在/不存在重定向wwwhttps://example.com。发布问题后,我还找到了缺失的upstream php块并添加了它。请参阅问题的评论。

环回有效,但效果有限。WordPress 仍然提示有错误。感谢这两条评论,我发现了原因。要完成回送,您需要 PHP FPM。Windows 上不存在该程序。您可以通过php-cgi.exe使用upstream php以下命令让 nginx 生成一个附加进程来解决这个问题:

upstream php {
    server 127.0.0.1:9000;
    server 127.0.0.1:9001;
}

正如我所观察到的,这允许 nginx 处理 WordPress 请求的环回,然后错误就会消失。不幸的是,这是不可行的。就像评论所说的那样,进程php-cgi.exe最终会崩溃。导致 PHP 完全停止并破坏网站。

看来我还是需要 Linux。可能得更换不会导致 Linux 出错的硬件。

答案2

您的系统似乎无法回调自身。这似乎是网络或环境问题(例如使用回环到同一系统但被错误路由和/或被防火墙阻止的 DNS 名称)。

无论如何,如果没有更多的细节就不可能回答这个问题。

最后但同样重要的一点是,家庭/实验室环境在这里显然是不相关的。

相关内容