|
Αυτή η ενότητα μας επιτρέπει να αλλάξουμε την τιμή της διεύθυνσης IP του πελάτη στην κεφαλίδα αιτήματος πελάτη (π.χ. X-Real-IP ή X-Forwarded-For). Αυτή η δυνατότητα είναι πολύ χρήσιμη για διακομιστές Nginx εάν το Nginx λειτουργεί πίσω από ορισμένους διακομιστές μεσολάβησης εξισορρόπησης φορτίου επιπέδου 7, επειδή η τοπική IP του αιτήματος πελάτη (δηλαδή η διεύθυνση αιτήματος του πελάτη) προστίθεται στην κεφαλίδα της διεύθυνσης IP του πελάτη κατά τη διέλευση από τον διακομιστή μεσολάβησης επιπέδου 7, έτσι ώστε το backend Nginx να μπορεί να αποκτήσει την τιμή διεύθυνσης IP του πελάτη. Το άρθρωμα δεν είναι εγκατεστημένο από προεπιλογή, οπότε αν θέλετε να χρησιμοποιήσετε το άρθρωμα, πρέπει να προσθέσετε την επιλογή --με-http_realip_module κατά τη μεταγλώττιση της εγκατάστασης. Ο λόγος για τη χρήση αυτής της ενότητας είναι ότι επιτρέπει στον διακομιστή παρασκηνίου να καταγράφει τη διεύθυνση IP του αρχικού πελάτη. Παράδειγμα διαμόρφωσηςset_real_ip_from 192.168.1.0/24; set_real_ip_from 192.168.2.1; real_ip_header X-Real-IP;
Δάχτυλα Παραγγελία Η ενότητα παρέχει μόνο δύο οδηγίες. Όνομα εντολής: set_real_ip_from Λειτουργία: Ο καθορισμός μιας αξιόπιστης διεύθυνσης μέσω αυτής της εντολής θα αντικατασταθεί με μια ακριβή διεύθυνση IP. Οι αξιόπιστες υποδοχές Unix μπορούν επίσης να χρησιμοποιηθούν από την έκδοση 0.8.22 και μετά. Το σύνολο IP εδώ αναφέρεται στο frontendNginx、ΒερνίκιήΚαλαμάριτηςΠΕΔιεύθυνση. Σύνταξη: set_real_ip_from [η διεύθυνση| CIDR|" unix:"] Προεπιλεγμένη τιμή: καμία Περιβάλλον χρήσης: http, διακομιστής, τοποθεσία Όνομα εντολής: real_ip_header Λειτουργία: Αυτή η εντολή χρησιμοποιείται για να ορίσετε ποια κεφαλίδα θα χρησιμοποιηθεί για την αντικατάσταση της διεύθυνσης IP. Εάν χρησιμοποιείται X-Forwarded-For, η λειτουργική μονάδα θα αντικαταστήσει τη διεύθυνση IP του διακομιστή μεσολάβησης προσκηνίου με την τελευταία διεύθυνση IP στην κεφαλίδα X-Forwarded-For. Σύνταξη: real_ip_header [X-Real-IP| X-Forwarded-For] Προεπιλεγμένη τιμή: real_ip_header X-Real-IP Περιβάλλον χρήσης: http, διακομιστής, τοποθεσία Χρήση περιπτώσεων Στο παρακάτω παράδειγμα, το περιβάλλον μας είναι το εξής: υπάρχουν δύο διακομιστές Nginx, ο ένας είναι το frontend και ο άλλος είναι το backend, το frontend Nginx χρησιμοποιείται ως διακομιστής μεσολάβησης και το backend Nginx χρησιμοποιείται για την παροχή πρόσβασης στη σελίδα και υπάρχει επίσης ένας πελάτης με την ακόλουθη διεύθυνση IP: Μπροστινό μέρος Nginx: 192.168.7.10 Υποστήριξη Nginx: 192.168.1.15 Πελάτης υποδοχής: 218.239.201.36 Η διαμόρφωση Nginx στο frontend μοιάζει με αυτό: διακομιστής { ακούω 80; server_name www.xx.com;
τοποθεσία / { ρίζα html; ευρετήριο index.html index.htm; Σύνολο χαρακτήρων UTF-8; }
τοποθεσία /865 { proxy_pass http://192.168.3.139:80/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; proxy_set_header Host $host. proxy_redirect απενεργοποιημένο? }
……
} Η διαμόρφωση Nginx για το backend είναι η εξής: διακομιστής { ακούω 80; server_name localhost;
τοποθεσία / { ρίζα /var/www/html; ευρετήριο index.html index.htm; } Πρόσβαση στο τεστ Εάν έχουμε πρόσβαση στο http://www.xx.com/865, δεν υπάρχει πρόβλημα, μπορεί να είναι μια κανονική πρόσβαση, το αρχείο καταγραφής πρόσβασης έχει ως εξής: Αρχεία καταγραφής από το frontend Nginx: 218.239.201.36 - - [30/Aug/2011:16:09:56 +0800] "GET /865/ HTTP/1.1" 200 151 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Αρχεία καταγραφής από το backend Nginx: 192.168.7.10 - - [30/Aug/2011:16:09:56 +0800] "GET // HTTP/1.0" 200 151 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Βλέπουμε ότι τα αρχεία καταγραφής Nginx του backend δεν καταγράφουν τη διεύθυνση IP του αρχικού πελάτη, αλλά τη διεύθυνση IP του frontend Nginx. Εάν τροποποιήσετε τη διαμόρφωση του διακομιστή Nginx στο παρασκήνιο σε: διακομιστής { ακούω 80; server_name localhost; set_real_ip_from 192.168.3.0/24; set_real_ip_from 100.100.0.0/16; real_ip_header X-Real-IP;
τοποθεσία / { ρίζα html; ευρετήριο index.html index.htm; }
……
}
Στη συνέχεια κάνουμε ξανά το τεστ πρόσβασης: Αρχεία καταγραφής από το frontend Nginx: 218.239.201.36 - - [30/Aug/2011:16:10:28 +0800 "GET /865/ HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Αρχεία καταγραφής από το backend Nginx: 218.239.201.36 - - [30/Aug/2011:16:10:28 +0800] "GET // HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1" Μπορεί να φανεί ότι αυτή τη φορά το φόντο καταγράφει τη διεύθυνση IP του πελάτη.
|