ICAP HTML 응답 서비스를 Squid 7에 연결하기
기존 ICAP 응답 서비스를 Squid 7 포워드 프록시에 연결하고 어떤 응답을 변환할지 결정합니다.
HTML 응답을 변환해야 하는 Squid 포워드 프록시에서는 적응 경로를 사용합니다. Squid는 브라우저의 프록시 요청을 처리하고, ICAP 응답 서비스가 본문 변환을 수행하여 적응된 HTTP 메시지를 반환합니다.
이렇게 하면 변환이 요청 수명 주기에서 명확한 위치를 갖습니다. 응답 헤더 규칙은 HTML 파서를 대체할 수 없으며, 별도의 웹 서버 필터는 Squid를 통과하는 트래픽을 자동으로 처리하지 않습니다.
응답 서비스 연결하기
ICAP 지원이 포함된 Squid 7 빌드와 기존 호환 서비스가 있는 경우 구성 형태는 다음과 같습니다.
acl adaptation_clients src 192.0.2.0/24
icap_enable on
icap_service html_editor respmod_precache bypass=0 icap://127.0.0.1:1344/modify
adaptation_access html_editor allow adaptation_clients
adaptation_access html_editor deny all
클라이언트 범위와 서비스 URI는 예시입니다. URI는 응답 변환을 구현하는 실제 ICAP 서비스를 지정해야 하며, /modify을 선언한다고 해서 서비스가 생성되지는 않습니다. 이 조각은 프록시의 기존 리스너와 접근 제어를 보완합니다.
respmod_precache는 캐시 이전 지점에서 응답 적응을 선택합니다. adaptation_access는 해당 서비스의 트랜잭션을 선택합니다. bypass=0 설정은 해당 트랜잭션이 서비스 장애를 만났을 때 Squid가 이 서비스를 조용히 건너뛸 수 없음을 의미합니다. 변환이 필수인지에 따라 그 장애 동작을 선택하십시오.
적응 지시문은 버전에 따라 다릅니다. 특히 이 구성 참조는 Squid 7 및 이전 지원 라인에 대한 ICAP 서비스와 적응 접근 인터페이스를 나열하고, Squid 8에서는 사용할 수 없다고 표시합니다. 이 조각은 Squid 7 예시로 취급하고 임의의 릴리스에 복사하지 마십시오.
서비스에 정확한 변환 계약 부여하기
어떤 응답이 대상이며 어떤 변경이 필요한지 지정하십시오. HTML만 변환하는 경우 이미지, 아카이브, 관련 없는 미디어는 그대로 두어야 합니다. 서비스는 실제로 받는 표현도 처리해야 합니다. 압축된 본문, 문자 인코딩, 변경된 본문을 설명하는 메타데이터입니다. 임의의 응답 바이트에 텍스트를 삽입하는 것은 일반적인 HTML 변환이 아닙니다.
교체가 사용자별로 다르면 캐시를 고려하십시오. 결과 표현이 한 명의 독자에게만 유효하다면 캐시 이전 변환과 공유 캐시의 조합은 좋지 않습니다. 캐시 가능성과 변환 정책을 일치시키고 적용 가능한 no-transform 지시문을 준수하십시오.
마지막으로 일반 HTTPS CONNECT 터널은 암호화된 바이트를 운반합니다. HTML을 응답 어댑터에 노출하지 않습니다. 의도적으로 관리되는 TLS 검사 구성은 복호화된 응답이 이 경로로 들어오기 전에 자체적인 호환 설정과 클라이언트 신뢰가 필요합니다. ICAP 규칙만으로는 그 가시성을 추가하지 않습니다.