AMP Packager 使用教程
1. 项目介绍
AMP Packager 是一个用于改进 AMP 网址的工具,通过使用 Signed Exchanges(签名交换)来实现。它允许网络发布者在 AMP 搜索结果中显示原始网址。AMP Packager 通过创建包含 AMP 文档的签名 HTTP 交换(SXGs)来工作,这些文档使用与原始域关联的证书进行签名,最长有效期为 7 天。Google AMP Cache 将获取、缓存并提供这些 SXGs,类似于它对普通 AMP HTML 文档的处理方式。
2. 项目快速启动
2.1 环境准备
- 安装 Go 版本 1.13 或更高版本。
- 克隆 AMP Packager 项目:
git clone https://github.com/ampproject/amppackager.git my-amp-directory
cd my-amp-directory
2.2 构建项目
make build
2.3 配置文件
创建一个配置文件 amppkg.toml
,示例如下:
LocalOnly = true
CertFile = 'path/to/fullchain.pem'
KeyFile = 'path/to/privkey.pem'
OCSPCache = '/tmp/amppkg-ocsp'
[[URLSet]]
[URLSet.Sign]
Domain = "amppackageexample.com"
2.4 启动服务
amppkg -development
如果配置文件不在当前工作目录,可以使用 -config
参数指定路径:
amppkg -config=/path/to/amppkg.toml
2.5 测试配置
运行 Chrome 并添加以下命令行参数:
alias chrome=[FULL PATH TO CHROME BINARY]
PATH_TO_FULLCHAIN_PEM=[FULL PATH TO fullchain.pem]
chrome --user-data-dir=/tmp/udd \
--ignore-certificate-errors-spki-list=$(\
openssl x509 -pubkey -noout -in $PATH_TO_FULLCHAIN_PEM | \
openssl pkey -pubin -outform der | \
openssl dgst -sha256 -binary | base64) \
--enable-features=SignedHTTPExchange \
'data:text/html,<a href="https://localhost:8080/priv/doc/https://amppackageexample.com/">click me'
打开 DevTools,检查 'Preserve log',点击链接并观察 URL 变化。
3. 应用案例和最佳实践
3.1 隐私保护预取
展示如何使用 SXGs 进行隐私保护预取:
go get -u github.com/ampproject/amppackager/cmd/amppkg_dl_sxg
amppkg_dl_sxg https://localhost:8080/priv/doc/https://amppackageexample.com/
3.2 生产环境部署
- 不要传递
-development
标志给amppkg
,这会导致它提供 HTTP 而不是 HTTPS。 - 不要将
amppkg
暴露给外部网络,保持它在内部网络中。 - 配置 TLS 前端服务器以有条件地代理到
amppkg
。
4. 典型生态项目
- AMP HTML: AMP Packager 主要用于处理 AMP HTML 文档,确保它们在搜索结果中显示正确的原始网址。
- Google AMP Cache: 用于缓存和提供 AMP 文档,与 AMP Packager 协同工作。
- Chrome 浏览器: 支持 Signed HTTP Exchanges,用于验证和显示 AMP 文档的原始网址。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考