前言
wordpress的頭像默認使用的gravatar服務, 但是其地址source.gravatar.com在國內完全無法訪問.
所以想着自己搭建一個鏡像, 可以查看下方的搭建過程
搭建
看網上很多教程, 說的都是通過某某雲服務商的cdn服務來進行代理, 但是我試了很久也沒有成功. 原因很簡單, 域名被國內屏蔽了, cdn 也是在國內訪問訪問的, 所以拉不到數據也正常.
也就是說, 歸根結底是屏蔽的原因, 如果能夠繞過屏蔽, 那么就可以成功了. 百思不得其解. 直到有一天, 我在阿里雲的oss后台看到了這個:

這不就是我想要的功能么? 我的思路是這樣的:
- 將
oss放到香港 - 通過
oss代理secure.gravatar.com - 通過
cdn代理oss進行加速
按照這個思路, 訪問secure.gravatar.com的地址在香港, 想必是可以訪問到的. 說干就干. 以下平台基於阿里雲.
創建Bucket
注意, 地域要選擇在香港.
配置鏡像回源

注意, 攜帶請求參數要選中.
測試回源配置
訪問一個默認頭像:
https://hujingnb-gravatar.oss-cn-hongkong.aliyuncs.com/avatar/9b59d04405217fb93755abf434aa9c1e?s=64&d=mm&f=y&r=g
請將其中的Bucket名稱更換為你自己的. 成功訪問后, 你會在文件管理中看到剛剛請求的文件已經保存了.

到這一步, 說明oss配置已經 OK 了.
如果你不需要配置 cdn, 那么, 到這一步其實已經可以使用了. 不過香港服務器在內地訪問速度上還是不太理想, 建議配一下cdn加速訪問
配置cdn
添加cdn域名. 鏈接: https://cdn.console.aliyun.com/domain/list
注意, 需要使用備案過的域名才可以. 然后選擇源站信息, 這里代理我們剛剛創建的oss即可.
創建域名解析
這里提示需要進行域名解析. 到域名服務商配置一下就行. 域名配置要等一會

直到上圖的狀態和CNAME都 OK 了. 就可以進行下一步了.

啟用 HTTPS
點擊cdn域名的管理, 配置 HTTPS. 使用服務商提供的免費證書即可.
OK. 到這一步, 就已經可以通過cdn來訪問Gravatar的頭像. 為了防止之前的鏈接緩存問題, 來個不一樣的頭像試一下: 記得將其中的域名改成你自己的.
https://*.hujingnb.com/avatar/6d42d2d850afb2b15f51156f37c16f41?s=64&d=identicon&f=y&r=g
如果訪問成功, 說明你已經成功了. 再次回到oss文件管理, 發現剛剛訪問的文件已經下載了.
到這里, 你的gravatar代理已經可以投入使用了.
配置頭像過期
這里需要配置兩個過期, 如果文件一直不過期, 那么用戶頭像更新之后也拿不到最新的頭像.
1.配置 cdn 過期
cdn會將訪問的文件緩存在各地節點, 所以需要配置一下過期時間.
2.配置 oss 過期
即使cdn文件過期了, 如果oss中文件還在, 會直接從oss中獲取, 仍然拿不到最新的頭像.
在oss中, 可以配置文件的生命周期, 指定時間之后, 自動將文件刪除.
比如, 可以配置一天后自動將文件刪除.
結束
如果你到了這里, 應該已經配好了吧. 愉快的使用自己的鏡像吧. 對了, 你可以將oss的訪問權限改為私有, 然后在cdn授權一下私有Bucket的可讀權限即可.
問題
最后, 說一下這樣配置的問題. 因為文件存儲到了oss, 而oss又是根據文件名進行緩存的. 當一個文件已經存在了, 就不會再次回源訪問了, 所以, 你會發現以下幾個頭像是相同的.
https://secure.gravatar.com/avatar/9b59d04405217fb93755abf434aa9c1e?s=64&d=mm&f=y&r=g
https://secure.gravatar.com/avatar/9b59d04405217fb93755abf434aa9c1e?s=64&d=retro&f=y&r=r
https://secure.gravatar.com/avatar/9b59d04405217fb93755abf434aa9c1e?s=64&d=wavatar&f=y&r=r
https://secure.gravatar.com/avatar/9b59d04405217fb93755abf434aa9c1e?s=64&d=identicon&f=y&r=r
https://secure.gravatar.com/avatar/9b59d04405217fb93755abf434aa9c1e?s=64&f=y&r=r
當然了, 如果是自己使用, 訪問頭像的參數都是固定的, 自然是沒有問題. 但如果要作為公共鏡像的話, 不同用戶訪問通過不同參數訪問到了同一個頭像, 就不太好了.
以上, 此方法穩定且費用極低, 但是建議僅個人使用, 不建議用作公共頭像.
當然, 如果不考慮費用的話, 可以買一個阿里雲香港的輕量服務器, 每月24元, 就可以通過nginx來進行反向代理, 不存在文件緩存的問題.
最后, 歡迎訪問我的小破站: https://hujingnb.com/archives/564
