Για έναν forward proxy Squid που πρέπει να μετασχηματίσει μια απόκριση HTML, χρησιμοποιήστε τη διαδρομή προσαρμογής. Το Squid χειρίζεται το αίτημα proxy του προγράμματος περιήγησης· μια υπηρεσία αποκρίσεων ICAP εκτελεί τον μετασχηματισμό του σώματος και επιστρέφει το προσαρμοσμένο μήνυμα HTTP.

Αυτό δίνει στον μετασχηματισμό μια καθορισμένη θέση στον κύκλο ζωής του αιτήματος. Ένας κανόνας κεφαλίδας απόκρισης δεν μπορεί να αντικαταστήσει έναν αναλυτή HTML, και ένα ξεχωριστό φίλτρο διακομιστή ιστού δεν επεξεργάζεται αυτόματα την κίνηση που περνά από το Squid.

Σύνδεση υπηρεσίας αποκρίσεων

Για μια έκδοση Squid 7 με υποστήριξη ICAP και μια υπάρχουσα συμβατή υπηρεσία, η μορφή της διαμόρφωσης είναι:

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 δεν δημιουργεί μία. Το απόσπασμα συμπληρώνει τον υπάρχοντα ακροατή του proxy και τους ελέγχους πρόσβασης.

Το respmod_precache επιλέγει προσαρμογή αποκρίσεων στο σημείο πριν από την κρυφή μνήμη. Το adaptation_access επιλέγει συναλλαγές για αυτή την υπηρεσία. Η ρύθμιση bypass=0 σημαίνει ότι το Squid δεν μπορεί να παραλείψει σιωπηλά αυτή την υπηρεσία όταν μια εφαρμοστέα συναλλαγή συναντήσει αποτυχία της υπηρεσίας. Επιλέξτε αυτή τη συμπεριφορά αποτυχίας ανάλογα με το αν ο μετασχηματισμός είναι υποχρεωτικός.

Οι οδηγίες προσαρμογής εξαρτώνται από την έκδοση. Συγκεκριμένα, αυτές οι αναφορές διαμόρφωσης απαριθμούν τις διεπαφές υπηρεσίας ICAP και πρόσβασης προσαρμογής για το Squid 7 και παλαιότερες υποστηριζόμενες σειρές και τις επισημαίνουν ως μη διαθέσιμες στο Squid 8. Αντιμετωπίστε το απόσπασμα ως παράδειγμα για Squid 7 αντί να το αντιγράψετε σε μια αυθαίρετη έκδοση.

Δώστε στην υπηρεσία ένα ακριβές συμβόλαιο μετασχηματισμού

Καθορίστε ποιες αποκρίσεις είναι επιλέξιμες και ποιες αλλαγές απαιτούνται. Ένας μετασχηματισμός μόνο HTML πρέπει να αφήνει ανέγγιχτες τις εικόνες, τα αρχεία και τα άσχετα μέσα. Η υπηρεσία πρέπει επίσης να χειρίζεται την αναπαράσταση που πραγματικά λαμβάνει: συμπιεσμένα σώματα, κωδικοποιήσεις χαρακτήρων και τα μεταδεδομένα που περιγράφουν το αλλαγμένο σώμα. Η εισαγωγή κειμένου σε αυθαίρετα byte απόκρισης δεν είναι γενικός μετασχηματισμός HTML.

Λάβετε υπόψη την κρυφή μνήμη όταν η αντικατάσταση αφορά συγκεκριμένο χρήστη. Ο μετασχηματισμός πριν από την κρυφή μνήμη και μια κοινόχρηστη κρυφή μνήμη είναι κακός συνδυασμός αν η αναπαράσταση που προκύπτει ισχύει μόνο για έναν αναγνώστη. Κρατήστε τη δυνατότητα κρύψης και την πολιτική μετασχηματισμού ευθυγραμμισμένες και σεβαστείτε τις εφαρμοστέες οδηγίες no-transform.

Τέλος, μια συνηθισμένη σήραγγα HTTPS CONNECT μεταφέρει κρυπτογραφημένα byte. Δεν εκθέτει HTML σε προσαρμογέα αποκρίσεων. Μια σκόπιμα διαχειριζόμενη διάταξη επιθεώρησης TLS χρειάζεται τη δική της συμβατή ρύθμιση και εμπιστοσύνη των πελατών πριν οι αποκρυπτογραφημένες αποκρίσεις μπορούν να εισέλθουν σε αυτή τη διαδρομή. Ο κανόνας ICAP από μόνος του δεν προσθέτει αυτή την ορατότητα.

Σχετικά άρθρα