前言
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