Een ICAP HTML-responstdienst aan Squid 7 koppelen
Koppel een bestaande ICAP-responstdienst aan een Squid 7 forward-proxy en bepaal welke reacties deze moet transformeren.
Gebruik het adaptatiepad voor een Squid forward-proxy die een HTML-reactie moet transformeren. Squid verwerkt het proxyverzoek van de browser; een ICAP-responstdienst voert de bodytransformatie uit en stuurt het aangepaste HTTP-bericht terug.
Dit geeft de transformatie een vaste plaats in de levenscyclus van het verzoek. Een antwoordheaderregel kan geen HTML-parser vervangen, en een aparte webserverfilter verwerkt verkeer dat door Squid gaat niet automatisch.
Een responstdienst koppelen
Voor een Squid 7-build met ICAP-ondersteuning en een bestaande compatibele dienst is de vorm van de configuratie:
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
Het clientbereik en de URI van de dienst zijn voorbeelden. De URI moet een werkelijke ICAP-dienst noemen die de reactietransformatie uitvoert; /modify declareren maakt er geen aan. Het fragment vult de bestaande listener en toegangscontroles van de proxy aan.
respmod_precache kiest reactieadaptatie op het punt vóór de cache. adaptation_access kiest transacties voor die dienst. De instelling bypass=0 betekent dat Squid deze dienst niet stil kan overslaan wanneer een toepasselijke transactie een dienstfout tegenkomt. Kies dat foutgedrag op basis van of de transformatie verplicht is.
De adaptatierichtlijnen zijn versieafhankelijk. Deze configuratiereferenties noemen met name de interfaces voor ICAP-dienst en adaptatietoegang voor Squid 7 en eerdere ondersteunde vertakkingen, en markeren ze als niet beschikbaar in Squid 8. Behandel het fragment als een Squid 7-voorbeeld in plaats van het naar een willekeurige release te kopiëren.
Geef de dienst een precies transformatiecontract
Geef aan welke reacties in aanmerking komen en welke wijzigingen nodig zijn. Een transformatie van alleen HTML moet afbeeldingen, archieven en niet-gerelateerde media ongemoeid laten. De dienst moet ook de representatie verwerken die hij daadwerkelijk ontvangt: gecomprimeerde bodies, tekencoderingen en de metadata die de gewijzigde body beschrijven. Tekst invoegen in willekeurige reactiebytes is geen algemene HTML-transformatie.
Denk aan caching wanneer de vervanging gebruikersspecifiek is. Een transformatie vóór de cache en een gedeelde cache zijn een slechte combinatie als de resulterende representatie slechts voor één lezer geldig is. Houd cachebaarheid en het transformatiebeleid op één lijn en respecteer toepasselijke no-transform-richtlijnen.
Tot slot vervoert een gewone HTTPS CONNECT-tunnel versleutelde bytes. Die stelt HTML niet bloot aan een reactieadapter. Een bewust beheerde TLS-inspectieopstelling heeft zijn eigen compatibele configuratie en clientvertrouwen nodig voordat ontsleutelde reacties dit pad kunnen betreden. De ICAP-regel alleen voegt die zichtbaarheid niet toe.