Πρόσφατα, υπήρξε ανάγκη για αυτήν την πτυχή στη δουλειά μου, το upstream είναι εντελώς δυναμικό, καθορίζεται από τον πελάτη, υπάρχουν κάποια σφάλματα στην αρχή και τέλος η υπηρεσία DNS καθορίζεται μέσω του resolver, η συγκεκριμένη διαδικασία είναι η εξής.
1. Ξεκινήστε να πατάτε στο λάκκο
Η διαμόρφωση του nginx έχει ως εξής:
Όταν στέλνω αυτού του είδους το αίτημα:
Αναφέρθηκε το ακόλουθο σφάλμα:
access.log: 127.0.0.1 - - [14/Σεπ/2017:23:37:10 +0800] "GET / HTTP/1.1" 502 179 "-" "curl/7.29.0"
error.log: 2017/09/14 23:38:31 [σφάλμα] 25307#25307: *48 δεν έχει οριστεί πρόγραμμα επίλυσης για επίλυσηwww.baidu.com, πελάτης: 127.0.0.1, διακομιστής: localhost, αίτημα: "GET / HTTP/1.1", κεντρικός υπολογιστής: "127.0.0.1:8001" Είναι σαφές ότι αυτό το ζήτημα δηλώνει ότι ο μη καθορισμός ενός προγράμματος επίλυσης προκαλεί προσαρμοσμένες upstreamwww.baidu.com.
2. Χρησιμοποιήστε το Resolver για να ορίσετε την ανάλυση ονόματος τομέα
Η τροποποιημένη διαμόρφωση nginx έχει ως εξής:
Τώρα τα αιτήματα είναι κανονικά 200:
req: μπούκλα "127.0.0.1:8001/" -H "upstream-host:www.baidu.com" -βόα μπούκλα "127.0.0.1:8001/" -H "upstream-host:www.qq.com" -βόα
access.log: 127.0.0.1 - - [14/Σεπ/2017:23:44:01 +0800] "GET / HTTP/1.1" 200 2381 "-" "curl/7.29.0" 127.0.0.1 - - [14/Σεπ/2017:23:44:07 +0800] "GET / HTTP/1.1" 200 244182 "-" "curl/7.29.0" 3. Οδηγίες επίλυσης
Η σύνταξη για την επίλυση είναι η εξής:
Syntax: resolver address ... [valid=time] [ipv6=on|off];
Default: —
Context: http, server, location Μπορείτε να διαμορφώσετε πολλές υπηρεσίες DNS, το nginx θα χρησιμοποιήσει polling για πρόσβαση σε υπηρεσίες DNS, το nginx θα αποθηκεύσει προσωρινά τα αποτελέσματα της ανάλυσης ονόματος τομέα DNS, ο χρόνος προσωρινής μνήμης καθορίζεται από έγκυρο και το IPv6 χρησιμοποιείται για την ενεργοποίηση ή απενεργοποίηση του IPv6.
resolver_timeout χρησιμοποιείται για τον καθορισμό του χρονικού ορίου για την επίλυση DNS.
|