在 wordpress 站点上,我们有请求进入 CloudFront,它将请求发送到通过 ELB 的源(如有必要),并发送到将为请求提供服务的两个或三个实例。
大多数请求都有效,但是当我们将 JSON 文件上传到 时admin-ajax.php
,会导致我们从 CloudFront 日志中捕获的 504 错误:
2022-01-31 21:32:24 MIA3-C2 1462 67.190.247.197 POST d2q8ixmwt0jy43.cloudfront.net /wp-admin/admin-ajax.php 504 https://xxxxxxx.com/wp-admin/edit.php?post_type=elementor_library&tabs_group=library Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/97.0.4692.99%20Safari/537.36%20Edg/97.0.1072.76 - - Error Ae0gLzThCiZR2N5D8gLO6s-o8IwwlmYrxWvUbUgr1A64_nMpzN0qRg== evolvetelemed.com https 167737 30.107 - TLSv1.3 TLS_AES_128_GCM_SHA256 Error HTTP/2.0 - - 64798 30.107 OriginCommError text/html 1033 - -
该错误似乎是OriginCommError
,但我不明白为什么会出现该错误。在我们的 Web 服务器上跟踪实例上的日志表明请求甚至没有到达那里。
我不确定为什么有些请求会起作用而有些则不会。再进一步总结一下,当媒体库中的二进制文件上传到 时async-upload.php
,它可以工作。
我们nginx
用作前端的网络服务器,php-fpm
用于处理 php。
这不是一个完整的答案,但评论太长了,它可能会给你一些想法。一旦我们得到真正的答案,我会删除它。
一些想法:
所有这些都向我表明 CloudFront 已将请求发送到 ALB,但在某些时候出现了超时。我建议您找到 ALB 日志,看看他们是否对此有所了解。我想查看它尝试将请求发送到哪个服务器,并仔细检查它是否到达。