기본적으로 Squid는 '성공' 및 '실패'를 포함한 모든 액세스 정보를 기록합니다. 나는 '실패'만 기록하고 싶습니다. 즉, Squid DENIED 결과 코드만 기록하거나 성공적인 HTTP 트랜잭션을 기록하지 않는 것과 같은 작업을 수행하고 싶습니다. '성공'과 '실패'를 어떻게 정의하든 상관없이 Squid가 로그 파일에 어떤 종류의 액세스 정보를 기록할지 더 구체적으로 정의할 수 있어야 합니다. 이 작업을 수행하는 방법을 아는 사람이 있나요?
답변1
다음을 사용하여 이 기능을 구현할 수 있습니다.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
이 구성의 문제점은 기본 로그 파일을 비활성화하고 두 ACL 중 하나와 일치하지 않는 항목을 기록하지 않는다는 것입니다. 이제 저는 ACL을 잘 작성했고 모든 가능성을 고려했다고 확신합니다. 하지만 여전히 불안할 수 있으므로 누락된 사항을 포착하기 위해 다른 로그 파일을 추가하는 것이 좋습니다. 두 ACL 모두
access_log stdio:/usr/local/squid/var/logs/unknown.log logformat=squid !success !failure
아니면 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