Android

Ρύθμιση ενός διακομιστή μεσολάβησης nginx reverse

Πως Τοποθετούμε έναν Αισθητήρα - Διακόπτη ST301 How to Install a Sensor - Switch | VTELECT - VTL

Πως Τοποθετούμε έναν Αισθητήρα - Διακόπτη ST301 How to Install a Sensor - Switch | VTELECT - VTL

Πίνακας περιεχομένων:

Anonim

Ο αντίστροφος διακομιστής μεσολάβησης είναι μια υπηρεσία που λαμβάνει αίτημα πελάτη, στέλνει το αίτημα σε έναν ή περισσότερους εξυπηρετητές proxied, ανακτά την απάντηση και παραδίδει την απάντηση του διακομιστή στον πελάτη.

Λόγω της απόδοσης και της επεκτασιμότητάς του, το NGINX χρησιμοποιείται συχνά ως αντίστροφος διακομιστής μεσολάβησης για διακομιστές HTTP και HTTP. Μια τυπική διαμόρφωση αντίστροφου διακομιστή μεσολάβησης είναι να τοποθετήσετε το Nginx μπροστά από τις εφαρμογές Node.js, Python ή Java.

Η χρήση του Nginx ως αντίστροφη πληρεξούσιο σας δίνει αρκετά πρόσθετα πλεονεκτήματα:

  • Εξισορρόπηση φορτίου - Το Nginx μπορεί να πραγματοποιήσει εξισορρόπηση φορτίου για τη διανομή των αιτημάτων των πελατών σε διακομιστές με πληρεξούσια, οι οποίοι βελτιώνουν την απόδοση, την επεκτασιμότητα και την αξιοπιστία. Caching - Με το Nginx ως αντίστροφη μεσολάβηση, μπορείτε να αποθηκεύσετε στην προσωρινή μνήμη τις προεπιλεγμένες εκδόσεις σελίδων για να επιταχύνετε τους χρόνους φόρτωσης σελίδας. Λειτουργεί με την αποθήκευση στο cache του περιεχομένου που λαμβάνεται από τις απαντήσεις των διακομιστών proxied και την χρήση του για να ανταποκριθεί στους πελάτες χωρίς να χρειάζεται να έρχεται σε επαφή με τον διακομιστή proxied για το ίδιο περιεχόμενο κάθε φορά. SSL τερματισμός - Nginx μπορεί να λειτουργήσει ως τελικό σημείο SSL για συνδέσεις με τους πελάτες. Θα χειριστεί και θα αποκρυπτογραφήσει τις εισερχόμενες συνδέσεις SSL και θα κρυπτογραφήσει τις απαντήσεις του διακομιστή μεσολάβησης. Συμπίεση - Εάν ο διακομιστής με proxy δεν στέλνει συμπιεσμένες απαντήσεις, μπορείτε να ρυθμίσετε το Nginx για να συμπιέσετε τις απαντήσεις πριν τις αποστείλετε στους πελάτες. Αντιμετώπιση προσβολών DDoS - Μπορείτε να περιορίσετε τις εισερχόμενες αιτήσεις και τον αριθμό των συνδέσεων ανά μοναδική διεύθυνση IP σε μια τιμή τυπική για τους τακτικούς χρήστες. Το Nginx σας επιτρέπει επίσης να αποκλείετε ή να περιορίζετε την πρόσβαση με βάση την τοποθεσία του πελάτη και την αξία των κεφαλίδων αιτήματος όπως "User-Agent" και "Referer".

Αυτό το άρθρο περιγράφει τα βήματα που απαιτούνται για τη ρύθμιση του Nginx ως αντίστροφη μεσολάβηση.

Προϋποθέσεις

Υποθέτουμε ότι έχετε εγκαταστήσει το Nginx στο διακομιστή Ubuntu, CentOS ή Debian.

Χρησιμοποιώντας το Nginx ως αντίστροφη μεσολάβηση

Για να ρυθμίσετε το Nginx ως αντίστροφο διακομιστή μεσολάβησης σε διακομιστή HTTP, ανοίξτε το αρχείο διαμόρφωσης του διακομιστή του τομέα του διακομιστή και καθορίστε μια τοποθεσία και έναν διακομιστή με πληρεξούσια μέσα του:

server { listen 80; server_name www.example.com example.com; location /app { proxy_pass http://127.0.0.1:8080; } }

Η διεύθυνση URL διακομιστή με proxy_pass έχει οριστεί χρησιμοποιώντας την οδηγία proxy_pass και μπορεί να χρησιμοποιεί HTTP ή HTTPS ως πρωτόκολλο, όνομα τομέα ή διεύθυνση IP και μια προαιρετική θύρα και URI ως διεύθυνση.

Η παραπάνω διαμόρφωση λέει στον Nginx να μεταβιβάσει όλα τα αιτήματα στη θέση /app στον διακομιστή με proxy στο http://127.0.0.1:8080 .

Στις κατανομές που βασίζονται στο Ubuntu και το Debian, τα αρχεία μπλοκ διακομιστή αποθηκεύονται στον κατάλογο /etc/nginx/sites-available /etc/nginx/conf.d /etc/nginx/sites-available , ενώ στο CentOS στον κατάλογο /etc/nginx/conf.d .

Για να δείξουμε καλύτερα πώς proxy_pass οδηγίες location και proxy_pass , ας πάρουμε το ακόλουθο παράδειγμα:

server { listen 80; server_name www.example.com example.com; location /blog { proxy_pass http://node1.com:8000/wordpress/; } }

Εάν ένας επισκέπτης έχει πρόσβαση στο http://example.com/blog/my-post , το Nginx θα πραγματοποιήσει μεσολάβηση αυτού του αιτήματος στη http://node1.com:8000/wordpress/my-post .

Όταν η διεύθυνση του εξυπηρετητή proxy περιέχει ένα URI, ( /wordpress/ ), το URI αίτησης που διαβιβάζεται στον εξυπηρετητή proxy αντικαθίσταται από ένα URI που καθορίζεται στην οδηγία. Εάν η διεύθυνση του εξυπηρετητή με πληρεξούσια προσδιορίζεται χωρίς URI, το URI πλήρους αίτησης διαβιβάζεται στον εξυπηρετητή με πληρεξούσια.

Πέρασμα κεφαλίδων αιτήματος

Όταν το Nginx υποκινεί ένα αίτημα, ορίζει αυτόματα δύο πεδία κεφαλίδας σε ένα αίτημα proxied από το πρόγραμμα-πελάτη Host και Connection και καταργεί κενές κεφαλίδες. Host έχει οριστεί στη μεταβλητή $proxy_host και η Connection έχει οριστεί για κλείσιμο.

Για να προσαρμόσετε ή να ορίσετε κεφαλίδες για συνδέσεις proxied, χρησιμοποιήστε την οδηγία proxy_set_header , ακολουθούμενη από την τιμή κεφαλίδας. Μπορείτε να βρείτε μια λίστα με όλες τις διαθέσιμες κεφαλίδες αιτήσεων και τις επιτρεπόμενες τιμές τους εδώ. Αν θέλετε να αποτρέψετε τη μετάδοση κεφαλίδας στον διακομιστή με εξειδίκευση, ορίστε το σε μια κενή συμβολοσειρά "" .

Στο παρακάτω παράδειγμα, αλλάζουμε την τιμή του πεδίου κεφαλίδας Host υπολογιστή σε $host και καταργώντας το πεδίο κεφαλίδας Accept-Encoding ορίζοντας την τιμή του σε μια κενή συμβολοσειρά.

location / { proxy_set_header Host $host; proxy_set_header Accept-Encoding ""; proxy_pass http://localhost:3000; }

Κάθε φορά που τροποποιείτε το αρχείο ρυθμίσεων, πρέπει να κάνετε επανεκκίνηση της υπηρεσίας Nginx για να εφαρμοστούν οι αλλαγές.

Διαμόρφωση του Nginx ως αντιστρόφου διακομιστή μεσολάβησης σε διακομιστή με πρωτόκολλο μη HTTP

Για να ρυθμίσετε το Nginx ως αντίστροφο διακομιστή μεσολάβησης σε διακομιστή με πρωτόκολλο μη HTTP, μπορείτε να χρησιμοποιήσετε τις ακόλουθες οδηγίες:

  • fastcgi_pass - αντίστροφη μεσολάβηση σε διακομιστή FastCGI. uwsgi_pass - αντίστροφη μεσολάβηση σε διακομιστή uwsgi. scgi_pass - αντίστροφη μεσολάβηση σε διακομιστή SCGI. memcached_pass - αντίστροφη μεσολάβηση σε διακομιστή Memcached.

Ένα από τα πιο συνηθισμένα παραδείγματα είναι να χρησιμοποιήσετε το Nginx ως αντίστροφη μεσολάβηση στο PHP-FPM:

server { #… other directives location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.2-fpm.sock; } }

Κοινές επιλογές εναλλαγής αντιγράφων Nginx

Η προβολή περιεχομένου μέσω του HTTPS έχει γίνει σήμερα ένα πρότυπο. Σε αυτή την ενότητα, θα σας δώσουμε ένα παράδειγμα αντιστοίχισης του διακομιστή μεσολάβησης HTTPS Nginx, συμπεριλαμβανομένων των συνιστώμενων παραμέτρων και των κεφαλίδων του διακομιστή μεσολάβησης Nginx.

location/ { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; }

  • proxy_http_version 1.1 - Ορίζει την έκδοση πρωτόκολλου HTTP για proxying, από προεπιλογή ορίστηκε στο 1.0. Για τις συνδέσεις Websockets και keepalive πρέπει να χρησιμοποιήσετε την έκδοση 1.1. proxy_cache_bypass $http_upgrade - Ορίζει τις συνθήκες κάτω από τις οποίες η απάντηση δεν θα ληφθεί από μια προσωρινή μνήμη. Upgrade $http_upgrade και Connection "upgrade" - Αυτά τα πεδία κεφαλίδων απαιτούνται εάν η εφαρμογή σας χρησιμοποιεί Websockets. Host $host - Η μεταβλητή $host με την ακόλουθη σειρά προτεραιότητας περιέχει: όνομα κεντρικού υπολογιστή από τη γραμμή αιτήματος ή όνομα κεντρικού υπολογιστή από το πεδίο κεφαλίδας αιτήματος Host ή το όνομα του διακομιστή που αντιστοιχεί σε ένα αίτημα. X-Real-IP $remote_addr - Προωθεί την απομακρυσμένη διεύθυνση IP του πραγματικού επισκέπτη στον διακομιστή με proxy. X-Forwarded-For $proxy_add_x_forwarded_for - Μια λίστα που περιέχει τις διευθύνσεις IP κάθε διακομιστή στον οποίο ο πελάτης έχει προωθηθεί. X-Forwarded-Proto $scheme - Όταν χρησιμοποιείται μέσα σε ένα μπλοκ διακομιστή HTTPS, κάθε απόκριση HTTP από τον διακομιστή με proxy ξαναγράφεται στο X-Forwarded-Host $host - Ορίζει τον αρχικό κεντρικό υπολογιστή που ζητά ο πελάτης. X-Forwarded-Port $server_port - Ορίζει την αρχική θύρα που ζητά ο πελάτης.

συμπέρασμα

Έχετε μάθει πώς να χρησιμοποιείτε το Nginx ως Reverse Proxy. Σας έχουμε επίσης δείξει πώς να μεταβιβάσετε πρόσθετες παραμέτρους στο διακομιστή και να τροποποιήσετε και να ορίσετε διαφορετικά πεδία κεφαλίδας σε αιτήσεις με εξουσιοδότηση.

nginx