我在 CentOS 7.8 上使用 Apache 2.4.43、Varnish 6 和 PHP-FPM 来服务 Magento 2 网站。
Varnish 监听端口 80。Apache 监听 8080 来为 Varnish 提供内容,同时监听端口 443,它将 HTTPS 请求代理到 Varnish,如下所示:
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:80/
RequestHeader set X-Forwarded-Port "443"
RequestHeader set X-Forwarded-Proto "https"
这对大多数请求都有效,但偶尔(约 10% 的请求)我会收到 Varnish 和 Apache 的 503 响应。我在 Apache 日志中看到的唯一错误是这个:
[proxy_http:error] [pid 6719:tid 140054596265728] (70008)Partial results are valid but processing is incomplete: [client x.x.x.x:53760] AH01110: error reading response, referer: http://example.com
如果我重试请求,它通常会立即生效,尽管有时我必须刷新几次才能满足请求。我注意到,在发出大量请求时(即包含数百个外部资产的页面),这种情况发生得更频繁。我还注意到似乎这在较大的文件上会发生,而在小文件上不会发生。
我猜测这可能是某种超时,但我不确定要调整哪些值或如何进一步调试它。
我尝试过的方法包括:
- 这个答案涉及更改我不使用的模块(Forge Rock OpenAm)。
- 这个建议禁用
mod_reqtimeout
,我试过但没有帮助。 - 我尝试过,
KeepAlive Off
但没有帮助。 - 我尝试
retry=0
在末尾添加ProxyPass
,这显然应该允许失败的代理连接立即重试,但这没有帮助
任何帮助深表感谢。