🔗 特性:代理协议
- 目标:支持此协议扩展,为选定的代理提供备用缓存设置。
- 版本: 3.0
- 开发者:Robert Collins
- 更多:http://www.w3.org/TR/edge-arch
🔗 详细信息
经常出现的问题是,如何在不影响外部普通代理的控制的情况下,覆盖作为反向代理网关的本地代理的 Cache-Control 标头。
HTTP 的代理协议扩展允许充当内容分发网关(反向代理 或加速器代理)的代理被分配与用户浏览器和中间代理都不同的特定控制。
支持已添加到 ESI 协议之外的 Squid-3.0 中,在启用 ESI 功能时可以使用。
Squid-3.2 将其独立出来供非 ESI 反向代理通用。
🔗 配置
🔗 Squid
- httpd_accel_surrogate_id 会通告给源服务器,以便它们可以根据特定的代理网关定制其控制。该 ID 可以是特定 Squid 实例唯一的,也可以由代理集群共享,具体形式取决于您的网关设计。
- http_accel_surrogate_remote on/off
- Squid-3.2 中的 visible_hostname 是默认的代理 ID 名称。这为单个代理(其唯一的公共主机名)或集群/云代理(共享的可见 FQDN)提供了相当可靠的默认值。
适用于 Squid-3.2 及更高版本的简单设置
http_port 80 accel
visible_hostname cdn.example.com
🔗 测试
您可以使用您喜欢的工具或脚本来显示 Web 服务器收到的标头进行测试。使用上述配置,您应该会看到类似这样的内容
GET / HTTP/1.1
Surrogate-Capability: cdn.example.com="Surrogate/1.0"
...
或者可能是
GET / HTTP/1.1
Surrogate-Capability: proxy123.example.com="Surrogate/1.0"
...
引用的文本可能包含其他协议名称,例如:“Surrogate/1.0 ESI/1.0”
🔗 Web 服务器
Web 服务器或应用程序必须能够接收 Surrogate-Capability 标头并识别 ID 是否可接受。
可能需要特别注意。ID 标签“unset-id”、“unconfigured”和“localhost”、“localhost.localdomain”已知可能由许多损坏或配置错误的代理发送。
然后,Web 服务器或应用程序会在其 HTTP 响应中添加 Surrogate-Control 标头,其中包含要替代 Cache-Control 标头设置的指令。
有关 Surrogate-Control 的详细信息,请参阅 http://www.w3.org/TR/edge-arch
🔗 用法示例
squid
visible_hostname cdn.example.com
Web 服务器标头
HTTP/1.1 200 OK
Cache-Control: no-cache, max-age=900, s-max-age=3600
Surrogate-Control: max-age=86400;cdn.example.com
...
这做了什么
- 告诉自称为 _cdn.example.com_ 的代理将此响应存储一天(Surrogate-Control max-age=86400),
- 告诉其他代理仅存储不超过一小时(Cache-Control s-maxage=3600)
- 告诉客户端 Web 浏览器存储不超过 15 分钟(Cache-Control max-age=900)
类别:功能
导航:站点搜索,站点页面,类别,🔼 向上