[英]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.