我正在尝试使用推送缓存选项Apache Traffic Server(ATS),将一些内容推送到我的缓存中。我阅读了文档,并尝试遵循它,但在使用此选项时,我遇到了以下问题/问题:
1 -在文档中提到,为了启用 PUSH 请求,请proxy.config.http.quick_filter.mask
在 中进行修改records.config
。但我在该文件中找不到要修改的超级掩码。grep -r proxy.config.http.quick_filter.mask .
在 ATS 配置文件夹中运行显示此超级掩码存在于ip_allow.config
文件中。它们相同吗?我应该在那里修改它还是应该将其添加到records.config
?不幸的是,由于我的问题 2,我无法检查这一点。
2 -我不确定如何发送此 HTTP PUSH 请求以及发送给谁(在哪个端口 - ATS 正在运行的同一端口?)。perl 脚本虽然我还没能运行这个脚本(不懂任何 perl 但正在研究 - 获取Can't locate File/MimeInfo/Magic.pm in @INC
),但它应该可以自动化这个过程。我想从脚本中打印出端口以查看如何推送到缓存中。
如能提供任何提示/建议我将非常感激。
答案1
我终于设法将内容推送到 ATS 缓存中。我使用了很多在线教程以及 ATS 支持团队,以下是操作方法,以防其他人感兴趣:
在编辑器中打开 records.config。您可以在下方找到该文件/usr/local/etc/trafficserver/
并执行以下修改:
- 确保 ATS 缓存选项已启用
CONFIG proxy.config.http.cache.http INT 1
- 为了能够将内容推送到缓存中,首先你需要能够执行 HTTP PUSH,设置
CONFIG proxy.config.http.push_method_enabled INT 1
- 让 ATS 忽略缓存对象年龄
CONFIG Proxy.config.http.cache.ignore_client_cc_max_age INT 1
其他缓存配置如下所示:
CONFIG proxy.config.http.cache.ignore_client_no_cache INT 1
CONFIG proxy.config.http.cache.ims_on_client_no_cache INT 0
CONFIG proxy.config.http.cache.ignore_server_no_cache INT 1
将 ATS 设置为从不验证缓存对象
CONFIG Proxy.config.http.cache.when_to_revalidate INT 3
然后您需要ip_allow.config
在同一文件夹中打开文件并进行以下修改。ip_allow.config
是声明 IP 和每个 IP 允许执行的操作的配置文件。为了允许本地主机推送请求,文件中有以下行ip_allow.config
:
src_ip=127.0.0.1 action=ip_allow method=ALL
现在您的 ATS 已设置为接受推送缓存。打开终端并按照以下步骤进行测试:
# telnet 127.0.0.1 8080
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
(在这里粘贴您想要推送的内容,请记住它应该是有效的 http 推送请求!)
PUSH http://www.company.com HTTP/1.0
Content-length: 84
HTTP/1.0 200 OK
Content-type: text/html
Content-length: 17
<HTML>
a
</HTML>
(以下是成功推送到缓存后你应该得到的结果)
HTTP/1.0 200 OK
Date: Tue, 05 Feb 2013 16:00:22 GMT
Server: ATS/3.2.0
Content-Length: 0
Connection closed by foreign host.
最后回答我的问题:
1)proxy.config.http.quick_filter.mask
已从 移至records.config
。您可以通过更改文件ip_allow.config
让 ATS 从不同文件中读取它们。CONFIG proxy.config.cache.ip_allow.filename STRING ip_allow.config
records.config
2)由于我设法使用 telnet,因此我拒绝使用该脚本。