Συμβατότητα NO_PROXY σε curl, .NET και containers
Μετατρέψτε μια κοινή πολιτική άμεσης δρομολόγησης σε διαμόρφωση ειδική για κάθε πελάτη χρησιμοποιώντας ένα μικρό σύνολο αντιπροσωπευτικών προορισμών.
Μια ομάδα βάζει ένα string παράκαμψης σε ένα κοινό αρχείο περιβάλλοντος. Το curl πηγαίνει απευθείας, μια άλλη εφαρμογή χρησιμοποιεί τον διακομιστή μεσολάβησης και ένα container συμπεριφέρεται ξανά διαφορετικά. Το κοινό αρχείο μοίρασε τους ίδιους χαρακτήρες. Δεν μοίρασε όμως έναν κοινό αναλυτή.
Το διαρκές αντικείμενο είναι η πολιτική: ποιοι προορισμοί πρέπει να είναι άμεσοι και υπό ποιες συνθήκες; Κρατήστε την ξεχωριστά από το string που χρειάζεται κάθε πρόγραμμα.
Γράψτε πρώτα τις αναμενόμενες διαδρομές
Χρησιμοποιήστε αντιπροσωπευτικές διευθύνσεις, συμπεριλαμβανομένων ορίων και όχι μόνο εύκολων επιτυχιών:
| Μορφή προορισμού | Ερώτηση προς τον κάτοχο της πολιτικής |
|---|---|
| Γονικός τομέας | Πρέπει να παρακάμπτεται ή μόνο τα παιδιά του; |
| Υποτομέας | Κληρονομεί την ίδια διαδρομή; |
| Κυριολεκτική ιδιωτική IP | Είναι αυτή η διεύθυνση άμεσα προσβάσιμη από αυτόν τον πελάτη; |
| Η ίδια υπηρεσία κάτω από ένα όνομα κεντρικού υπολογιστή | Πρέπει τα αιτήματα βάσει ονόματος και βάσει διεύθυνσης να συμφωνούν; |
| Άλλη θύρα υπηρεσίας | Η εξαίρεση καλύπτει τον κεντρικό υπολογιστή ή έναν ακροατή; |
Στη συνέχεια εντοπίστε τους καταναλωτές: ο δαίμονας που κατεβάζει μια εικόνα, το πρόγραμμα μέσα στο container, μια βιβλιοθήκη HTTP γλώσσας και ένας διαδραστικός περιηγητής μπορούν όλα να είναι ξεχωριστές εγγραφές. Μια διαμόρφωση διακομιστή μεσολάβησης πελάτη Docker μπορεί να συμπληρώσει τιμές περιβάλλοντος του container χωρίς κάθε πελάτης στο εσωτερικό να πρέπει να υλοποιεί τους ίδιους κανόνες αντιστοίχισης.
Μεταφράστε αντί να αντιγράφετε στα τυφλά
Ένα τεκμηριωμένο παράδειγμα πραγματικής διαφοράς είναι το όριο του γονικού τομέα. Ο αποκλεισμός τομέα του curl καλύπτει τον ονομαζόμενο τομέα και τα αντίστοιχα παιδιά. Η πολιτική περιβάλλοντος του .NET διακρίνει το γυμνό όνομα από τη μορφή υποτομέα με αρχική τελεία. Ένας καθολικός κανόνας να προσθέτεις πάντα αρχική τελεία δεν μπορεί να εκφράσει αξιόπιστα και τις δύο πολιτικές.
Η υποστήριξη περιοχών IP εξαρτάται επίσης από τον καταναλωτή και την έκδοσή του. Ένα μηχάνημα με νέο αυτόνομο curl μπορεί ακόμη να εκτελεί μια εφαρμογή συνδεδεμένη με παλαιότερο libcurl ή έναν πελάτη που χρησιμοποιεί εντελώς άλλη βιβλιοθήκη. Η έκδοση του λειτουργικού συστήματος δεν είναι πλήρης κατάλογος πελατών.
Για κάθε καταναλωτή, καταγράψτε τη υποστηριζόμενη διεπαφή διαμόρφωσης και τη μικρότερη έκφραση των επιδιωκόμενων διαδρομών. Μια σύντομη ρητή λίστα κεντρικών υπολογιστών μπορεί να είναι καλύτερη από ένα έξυπνο μοτίβο του οποίου το νόημα κανείς δεν μπορεί να εξηγήσει.
Κρατήστε τα στοιχεία διαμόρφωσης ξεχωριστά από τα στοιχεία σύνδεσης
Μια αναλυμένη ρύθμιση ή ένα API αποφάσεων δρομολόγησης μπορεί να δείξει τι επέλεξε το πρόγραμμα. Το αποτέλεσμα ενός αιτήματος δείχνει στη συνέχεια αν αυτή η διαδρομή ήταν χρησιμοποιήσιμη. Στο .NET, HttpClient.DefaultProxy.IsBypassed παρέχει αυτόν τον έλεγχο από την πλευρά της διαμόρφωσης όταν ο προεπιλεγμένος διακομιστής μεσολάβησης είναι η πολιτική που χρησιμοποιείται. Μην διαγιγνώσκετε μια μη προσβάσιμη άμεση υπηρεσία ως αποτυχία του αναλυτή παράκαμψης μόνο και μόνο επειδή το αίτημα έληξε.
Διατηρήστε τους προορισμούς ορίων κατά την ενημέρωση ενός πελάτη ή μιας βασικής εικόνας. Κάνουν τις μελλοντικές αλλαγές συμβατότητας ορατές χωρίς να χρειάζεται ολόκληρη η ομάδα να ανακαλύψει ξανά γιατί το αρχείο περιέχει δύο παρόμοιες εγγραφές τομέα.