默认情况下,squid 会记录所有访问信息,包括“成功”和“失败”。我只对记录“失败”感兴趣。换句话说,我想做一些事情,比如只记录 Squid DENIED 结果代码,或者不记录成功的 HTTP 事务。无论我如何定义“成功”和“失败”,我都需要能够更具体地定义 Squid 将写入日志文件的访问信息类型。有人知道怎么做这个吗?
您可以使用ACL实现此功能,但有一些技巧。
主要技巧是确保您不会意外检查http_status代码的二进制连接。Squid 永远不会看到二进制连接的状态代码,并且会在cache.log二进制连接中抛出警告,如果你搞砸了它。
这是一个示例配置,它将写入所有 http 成功和重定向以及完成打开套接字的所有二进制连接(除此之外我们没有成功/失败可见性)success.log,以及所有 http 失败代码和二进制连接失败打开一个套接字到failure.log.
acl CONNECT method CONNECT
# http status codes (http://wiki.squid-cache.org/SquidFaq/SquidLogs)
acl success_codes http_status 100-199 # informational
acl success_codes http_status 200-299 # successful transactions
acl success_codes http_status 300-399 # redirection
acl failure_codes http_status 400-499 # client error
acl failure_codes http_status 500-599 # server error
acl success_hier hier_code HIER_DIRECT
acl failure_hier hier_code HIER_NONE
acl failure all-of CONNECT failure_hier
acl failure all-of !CONNECT failure_codes
acl success all-of CONNECT success_hier
acl success all-of !CONNECT success_codes
access_log stdio:/usr/local/squid/var/logs/success.log logformat=squid success
access_log stdio:/usr/local/squid/var/logs/failure.log logformat=squid failure
Run Code Online (Sandbox Code Playgroud)
此配置的问题在于它禁用了默认日志文件,并且不会记录与这两个 ACL 之一不匹配的任何内容。现在,我非常有信心我已经很好地编写了我的 ACL 并且我已经考虑了所有的可能性,但这仍然会让我感到紧张,所以你可能想要添加另一个日志文件来捕捉任何碰巧错过的东西两个 ACL
access_log stdio:/usr/local/squid/var/logs/unknown.log logformat=squid !success !failure
Run Code Online (Sandbox Code Playgroud)
或者您可以定义success并设置失败!success
acl CONNECT method CONNECT
# http status codes (http://wiki.squid-cache.org/SquidFaq/SquidLogs)
acl success_codes http_status 100-199 # informational
acl success_codes http_status 200-299 # successful transactions
acl success_codes http_status 300-399 # redirection
acl success_hier hier_code HIER_DIRECT
acl failure_hier hier_code HIER_NONE
acl success all-of CONNECT success_hier
acl success all-of !CONNECT success_codes
access_log stdio:/usr/local/squid/var/logs/success.log logformat=squid success
access_log stdio:/usr/local/squid/var/logs/failure.log logformat=squid !success
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2474 次 |
| 最近记录: |