[英]Nginx proxy_cache_background_update purge cache on origin error
[英]AMP update-cache resulting in 404 or 410 error from origin
几天来,我一直在尝试更新我网站上的 AMP 缓存页面,但无济于事。
虽然存在更新缓存的文档,但它可能是由 Google 工程师编写的,因此不是最容易阅读的。
我已尽我所能按照指示进行操作。 我已经创建了一个私钥和公钥。 创建了一个 signature.bin 并使用 Google 自己的文档中的过程对其进行了验证。
~$ openssl dgst -sha256 -signature signature.bin -verify public-key.pem url.txt
验证正常
public-key.pem 已重命名为 apikey.pub 并上传到以下目录:
为了验证复制没有问题,我使用以下命令检查了签名:
$ openssl dgst -sha256 -signature signature.bin -verify <(curl https://irecover.ca/.well-known/amphtml/apikey.pub ) url.txt
% Total % Received % Xferd Average Speed Time Time Time Current
下载上传总花费的剩余速度
100 450 100 450 0 0 2653 0 --:--:-- --:--:-- --:--:-- 2662
验证正常
现在我将签名文件转换为 base64 并将 / 替换为 _,将 + 替换为 -
猫签名.bin | base64 > 签名.b64
sed 's///_/g' 签名.b64 > 签名.b64a
sed 's/+/-/g' 签名.b64a > 签名.b64b
sed 's/=//g' 签名.b64b > 签名.b64c
猫签名.b64c | tr -d '\\n' > 签名.b64
我制作了一个脚本,为我制作更新缓存 url。 它还在那一刻创建一个时间戳并将其用于 amp_ts 变量(因此 amp_ts 永远不会超过 1 秒)。 然后我将它附加到查询的末尾,该查询将被我制作的脚本卷曲,所以它看起来像这样:
但是,这总是会导致来自 google 的相同错误代码。
由于摄取错误而导致公钥无效:来自源的 404 或 410 错误
有谁知道我做错了什么?
需要检查 apikey.pub 可访问性的几件事:
/.well-known/amphtml/apikey.pub
文件可被移动和桌面用户代理访问(例如,对于非移动设备没有重定向,因为 AMP 缓存客户端可能会重定向)
robots.txt 中不排除公钥,例如:
User-agent: *
Allow: /.well-known/amphtml/apikey.pub
curl -I https://amp.example.com/.well-known/amphtml/apikey.pub
HTTP/2 200
date: Sun, 26 Jul 2020 23:48:55 GMT
content-type: text/plain
vary: Accept-Encoding
etag: W/"1c3-173478a8840"
last-modified: Sun, 26 Jul 2020 23:48:55 GMT
有了这些东西,我从更新/缓存端点得到了一个“OK”的成功响应
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.