Βασικές οδηγίες του αρχείου διαμόρφωσης διακομιστή ιστού nginx. Δημιουργία ενός απλού διακομιστή μεσολάβησης. Εγκατάσταση του διαχειριστή πακέτων aptitude, ενημέρωση του ευρετηρίου και των πακέτων

Ένας από τους πιο δημοφιλείς διακομιστές ιστού

Το Nginx είναι πολύ δημοφιλές μεταξύ των χρηστών web και διακομιστή μεσολάβησης λόγω της απόδοσής του. Ο διακομιστής έχει πολλά πλεονεκτήματα, αλλά η ρύθμιση του θα είναι δύσκολη για έναν αρχάριο. Θέλουμε να σας βοηθήσουμε να κατανοήσετε τα αρχεία διαμόρφωσης, τη σύνταξη και τη ρύθμιση των βασικών παραμέτρων Nginx.

Ιεραρχία καταλόγου

Όλα τα αρχεία διαμόρφωσης διακομιστή βρίσκονται στον κατάλογο /etc/nginx. Επιπλέον, υπάρχουν αρκετοί ακόμη φάκελοι μέσα στον κατάλογο, καθώς και αρθρωτά αρχεία διαμόρφωσης.

cd /etc/nginx
ls -F
conf.d/ koi-win naxsi.rules scgi_params uwsgi_params
fastcgi_params mime.types nginx.conf sites-available/win-utf
koi-utf naxsi_core.rules proxy_params sites-enabled/

Εάν έχετε χρησιμοποιήσει το Apache, θα πρέπει να είστε εξοικειωμένοι με τους καταλόγους που είναι ενεργοποιημένοι και διαθέσιμοι για ιστότοπους. Καθορίζουν τη διαμόρφωση των τοποθεσιών. Τα αρχεία που δημιουργούνται αποθηκεύονται στον τελευταίο κατάλογο. Ο φάκελος με ενεργοποιημένο τοποθεσίες απαιτείται μόνο για την αποθήκευση διαμορφώσεων ενεργοποιημένες σελίδες. Για να τα συνδέσετε χρειάζεστε συμβολικός σύνδεσμοςμεταξύ φακέλων. Οι διαμορφώσεις μπορούν επίσης να αποθηκευτούν στον κατάλογο conf.d. Ταυτόχρονα, κατά την εκκίνηση του Nginx, κάθε αρχείο με την επέκταση .conf θα διαβάζεται εκ νέου. Όταν γράφετε αρχεία διαμόρφωσης, πληκτρολογήστε τον κώδικα χωρίς σφάλματα και ακολουθήστε τη σύνταξη. Όλα τα άλλα αρχεία βρίσκονται στο /etc/nginx. Ο διαμορφωτής περιέχει πληροφορίες για συγκεκριμένες διαδικασίες, καθώς και πρόσθετα στοιχεία.

Το κύριο αρχείο διαμόρφωσης Nginx είναι το nginx.conf.

Διαβάζει όλα τα αρχεία διαμόρφωσης, συνδυάζοντάς τα σε ένα που ζητείται κατά την εκκίνηση του διακομιστή. Ανοίξτε το αρχείο με:

sudo nano /etc/nginx/nginx.conf

Οι ακόλουθες γραμμές θα εμφανιστούν στην οθόνη:

χρήστης www-data;
worker_processes 4;
pid /var/run/nginx.pid;
εκδηλώσεις (
Worker_connections 768;
#multi_accept on;
}
http(
. . .

Το πρώτο είναι γενικές πληροφορίεςσχετικά με το Nginx. Η φράση χρήστης www-data υποδηλώνει τον χρήστη που τρέχει τον διακομιστή. Η οδηγία pid δείχνει πού προορίζονται οι διεργασίες PID εσωτερική χρήση. Η γραμμή worker_processes δείχνει πόσες διεργασίες μπορεί να τρέξει το Nginx ταυτόχρονα. Επιπλέον, μπορείτε να καθορίσετε αρχεία καταγραφής εδώ (για παράδειγμα, το αρχείο καταγραφής σφαλμάτων προσδιορίζεται χρησιμοποιώντας την οδηγία error_log). Παρακάτω είναι η ενότητα των εκδηλώσεων. Απαιτείται για το χειρισμό των συνδέσεων διακομιστή. Μετά είναι το μπλοκ http.

Δομή αρχείου διαμόρφωσης Nginx

Η κατανόηση της δομής μορφοποίησης αρχείων θα σας βοηθήσει να κατανοήσετε καλύτερα τη διαμόρφωση του διακομιστή web σας. Χωρίζεται σε δομικά μπλοκ. Οι λεπτομέρειες διαμόρφωσης του μπλοκ http τοποθετούνται σε επίπεδα χρησιμοποιώντας ιδιωτικά μπλοκ. Κληρονομούν ιδιότητες από τον γονέα, δηλ. αυτή στην οποία βρίσκονται. Αυτό το μπλοκ αποθηκεύει τις περισσότερες διαμορφώσεις διακομιστή. Χωρίζονται σε μπλοκ διακομιστών, μέσα σε ποια τοποθεσία.

Όταν ρυθμίζετε Διακομιστής Nginx, να θυμάστε ότι όσο χαμηλότερα βρίσκεται το μπλοκ διαμόρφωσης, τόσο λιγότερα στοιχεία θα κληρονομήσουν ιδιότητες και το αντίστροφο. Το αρχείο περιέχει μεγάλο αριθμό επιλογών που αλλάζουν τη λειτουργία του διακομιστή. Μπορείτε να ορίσετε τη συμπίεση για τα αρχεία που αποστέλλονται στον πελάτη, για παράδειγμα. Για να το κάνετε αυτό, εισαγάγετε τις παραμέτρους:

gzip ενεργό?
gzip_disable "msie6";

Λάβετε υπόψη ότι η ίδια παράμετρος μπορεί να λάβει διαφορετικές έννοιεςσε διάφορα μπλοκ. Τοποθετήστε το πρώτα στην κορυφή και, στη συνέχεια, επαναπροσδιορίστε την παράμετρο στο επιθυμητό επίπεδο. Εάν δεν εκτελεστεί η τελευταία ενέργεια, το πρόγραμμα θα ορίσει τις τιμές αυτόματα.

Οι τελευταίες γραμμές του αρχείου nginx.conf είναι:

συμπεριλάβετε το /etc/nginx/conf.d/*.conf;
περιλαμβάνει /etc/nginx/sites-enabled/*;

Υποδηλώνουν ότι τα μπλοκ τοποθεσίας και διακομιστή αποθηκεύονται εκτός αυτού του αρχείου. Καθορίζουν ρυθμίσεις για διευθύνσεις URL και συγκεκριμένα αρχεία. Αυτή η δομή είναι απαραίτητη για τη διατήρηση μιας αρθρωτής δομής διαμόρφωσης. Μέσα σε αυτό μπορείτε να δημιουργήσετε νέους καταλόγους και αρχεία για διαφορετικούς ιστότοπους. Εκτός, παρόμοια αρχείαμπορείτε να ομαδοποιήσετε. Μετά από εξέταση, μπορείτε να κλείσετε το αρχείο nginx.conf.

Εικονικά μπλοκ

Είναι ανάλογοι με τους εικονικούς κεντρικούς υπολογιστές στον Apache. Τα μπλοκ ενοτήτων διακομιστή περιλαμβάνουν χαρακτηριστικά μεμονωμένων τοποθεσιών που βρίσκονται στον διακομιστή. Στο φάκελο "sites-available" θα βρείτε το προεπιλεγμένο αρχείο μπλοκ διακομιστή. Μέσα σε αυτό μπορείτε να βρείτε τα απαραίτητα δεδομένα που μπορεί να απαιτούνται κατά τη συντήρηση τοποθεσιών.

Διαθέσιμες τοποθεσίες cd
προεπιλογή sudo nano
διακομιστής (
root /usr/share/nginx/www;
ευρετήριο index.html index.htm;
server_name localhost;
τοποθεσία/(
try_files $uri $uri/ /index.html;
}
τοποθεσία /έγγραφο/ (
ψευδώνυμο /usr/share/doc/;
αυτόματο ευρετήριο ενεργό?
επιτρέψτε 127.0.0.1;
αρνούνται όλα?
}
}

Στο παραπάνω παράδειγμα, τα σχόλια αφαιρέθηκαν σκόπιμα. Αυτό έγινε για ευκολία αντίληψης. Μέσα στα μπλοκ διακομιστή υπάρχουν ρυθμίσεις που περικλείονται σε σγουρά άγκιστρα:

Αυτό το μπλοκ τοποθετείται χρησιμοποιώντας την οδηγία περιλαμβάνει στο τέλος του http, γραμμένη στο αρχείο nginx.conf. Η οδηγία root ορίζει τον κατάλογο όπου θα βρίσκεται το περιεχόμενο του ιστότοπου. Σε αυτό, το πρόγραμμα θα αναζητήσει αρχεία που θα ζητήσει ο χρήστης. Η προεπιλεγμένη διαδρομή είναι: /usr/share/nginx/www. Το Nginx διαχωρίζει γραμμές ή οδηγίες η μία από την άλλη χρησιμοποιώντας ερωτηματικά. Εάν δεν βάλετε σημείο στίξης, πολλές γραμμές θα διαβαστούν ως μία. Για να καθορίσετε τους κανόνες που θα χρησιμοποιηθούν ως ευρετήριο, χρησιμοποιήστε την οδηγία ευρετηρίου. Ο διακομιστής θα τα ελέγξει με τη σειρά που αναφέρονται. Εάν καμία από τις διαθέσιμες σελίδες δεν ζητήθηκε από τον χρήστη, το index.html θα επιστραφεί. Εάν δεν υπάρχει, ο διακομιστής θα αναζητήσει index.htm.

κανόνας ονόματος διακομιστή

Περιλαμβάνει μια λίστα ονομάτων τομέα που θα πρέπει να επεξεργαστεί το μπλοκ διακομιστή. Μπορείτε να εισαγάγετε οποιονδήποτε αριθμό από αυτά, διαχωρισμένα με κενά. Εάν βάλετε * στο τέλος ή στην αρχή του τομέα, μπορείτε να καθορίσετε ένα όνομα με μια μάσκα. Ο αστερίσκος ταιριάζει με μέρος του ονόματος. Εάν εισαγάγετε *.com.ua, τότε αυτό θα περιλαμβάνει όλες τις διευθύνσεις των καθορισμένων ζώνη τομέα. Εάν η διεύθυνση ταιριάζει με την περιγραφή πολλών οδηγιών, τότε θα απαντήσει σε αυτή που ταιριάζει πλήρως. Εάν δεν υπάρχουν αντιστοιχίες, η απάντηση θα είναι η μεγαλύτερη μακρύ όνομα, που έχει μάσκα. Διαφορετικά, θα πραγματοποιηθεί αντιστοίχιση τυπικών εκφράσεων. Τα ονόματα διακομιστών που χρησιμοποιούν κανονικές εκφράσεις ξεκινούν με μια περισπωμένη (~).

Μπλοκ τοποθεσιών

Στη συνέχεια στη σειρά θα έχουμε το μπλοκ τοποθεσίας. Απαιτείται για τον προσδιορισμό της μεθόδου επεξεργασίας ορισμένα αιτήματα. Εάν οι πόροι δεν ταιριάζουν με κανένα άλλο μπλοκ τοποθεσίας, τότε οι οδηγίες που καθορίζονται στις παρενθέσεις θα εφαρμοστούν σε αυτούς. Αυτά τα μπλοκ μπορεί να περιλαμβάνουν μια διαδρομή όπως το /doc/. Για να δημιουργηθεί μια πλήρης αντιστοίχιση μεταξύ uri και τοποθεσίας, χρησιμοποιείται το σύμβολο =. Χρησιμοποιώντας το tilde, μπορείτε να αντιστοιχίσετε κανονικές εκφράσεις. Μπορείτε επίσης να ορίσετε την ευαισθησία πεζών-κεφαλαίων βάζοντας ~. Εάν προσθέσετε έναν αστερίσκο, τα πεζά και κεφαλαία δεν έχουν σημασία.

Λάβετε υπόψη: όταν το αίτημα ταιριάζει πλήρως με το μπλοκ τοποθεσίας, θα χρησιμοποιηθεί και η αναζήτηση θα σταματήσει. Όταν η αντιστοίχιση δεν είναι ολοκληρωμένη, το URI θα συγκριθεί με τις παραμέτρους των οδηγιών τοποθεσίας. Χρησιμοποιήστε ένα μπλοκ με ^~ που ταιριάζει με το URI για να επιλέξετε το μπλοκ. Αν αυτή την επιλογήμη χρησιμοποιείτε, ο διακομιστής επιλέγει τη βέλτιστη αντιστοίχιση και πραγματοποιεί επίσης αναζήτηση χρησιμοποιώντας κανονικές εκφράσεις. Αυτό είναι απαραίτητο για να επιλέξετε ένα από τα κατάλληλα πρότυπα. Εάν βρεθεί μια κατάλληλη έκφραση, θα χρησιμοποιηθεί. Διαφορετικά, θα εφαρμοστεί η προηγούμενη αντιστοίχιση URI. Ωστόσο, έχετε κατά νου ότι το Nginx προτιμά full match. Εάν δεν υπάρχουν, θα ξεκινήσει η αναζήτηση για κανονικές εκφράσεις και στη συνέχεια με URI. Η ισοτιμία αναζήτησης καθορίζεται από τον συνδυασμό συμβόλων ^~.

κανόνας try_files

Αυτό είναι πολύ χρήσιμο εργαλείο, μπορεί να ελέγχει την παρουσία αρχείων μέσα με τον προβλεπόμενο τρόπο. Χρησιμοποιεί το πρώτο που ταιριάζει με τα κριτήρια για την επεξεργασία του αιτήματος. Μπορείτε να χρησιμοποιήσετε πρόσθετες παραμέτρους για να καθορίσετε τον τρόπο με τον οποίο ο διακομιστής θα εξυπηρετεί αιτήματα. Ο διαμορφωτής έχει αυτήν την προεπιλεγμένη γραμμή:

try_files $uri $uri/ /index.html;

Τι σημαίνει? Εάν εισέλθει ένα αίτημα που εξυπηρετείται από ένα μπλοκ τοποθεσίας, ο διακομιστής θα προσπαθήσει πρώτα να αντιμετωπίσει το uri ως αρχείο. Αυτό παρέχεται από τη μεταβλητή $uri. Όταν δεν υπάρχουν αντιστοιχίσεις, το uri θα αντιμετωπίζεται ως κατάλογος. Μπορείτε να ελέγξετε την ύπαρξή του προσθέτοντας μια τελική κάθετο: $uri/. Υπάρχουν περιπτώσεις που δεν θα βρεθεί ούτε το αρχείο ούτε ο κατάλογος. Σε αυτήν την περίπτωση, θα φορτωθεί το προεπιλεγμένο αρχείο - index.html. Ισχύει ο κανόνας try_files τελευταία παράμετροςως εφεδρική επιλογή. Γι' αυτό αυτό το αρχείοπρέπει να είναι στο σύστημα. Ωστόσο, εάν δεν βρεθούν καθόλου αντιστοιχίσεις, το Nginx θα επιστρέψει μια σελίδα σφάλματος. Για να το ρυθμίσετε, πληκτρολογήστε = και τον κωδικό σφάλματος:

Επιπλέον επιλογές

Εάν εφαρμόσετε τον κανόνα ψευδωνύμου, θα μπορείτε να προβάλλετε σελίδες του μπλοκ τοποθεσίας εκτός του ριζικού καταλόγου, για παράδειγμα. Όταν χρειάζονται αρχεία από το doc, θα ζητηθούν από το /usr/share/doc/. Επιπλέον, ο κανόνας αυτόματου ευρετηρίου για αρχίζει να παραθέτει τους καταλόγους διακομιστή για την καθορισμένη οδηγία τοποθεσίας. Εάν γράψετε τις γραμμές άρνησης και αποδοχής, θα μπορείτε να αλλάξετε την πρόσβαση στους καταλόγους.

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

Nginx; Σκοπός, δυνατότητες, επιλογές ρυθμίσεων - αυτά είναι πράγματα που πρέπει να γνωρίζει κάθε προγραμματιστής ιστού για να δοκιμάσει τη δουλειά του.

Ας πούμε δυο λόγια για το nginx

Αυτό το εργαλείο έχει μία κύρια και πολλές διαδικασίες εργασίας. Το πρώτο αφορά την ανάγνωση και τον έλεγχο της διαμόρφωσης. Η διαχείριση της εργασιακής διαδικασίας είναι επίσης υπό τον έλεγχό του. Καθήκον του τελευταίου είναι η επεξεργασία των εισερχόμενων αιτημάτων. Το Nginx χρησιμοποιεί ένα μοντέλο που βασίζεται σε συμβάντα. Μηχανισμοί που εξαρτώνται από λειτουργικό σύστημαγια την επίτευξη αποτελεσματικής κατανομής των αιτημάτων απευθείας μεταξύ των διαδικασιών των εργαζομένων. Ο αριθμός τους αναγράφεται πάντα στο αρχείο διαμόρφωσης. Η τιμή μπορεί είτε να καθοριστεί είτε να οριστεί αυτόματα, με βάση τον αριθμό πυρήνες επεξεργαστή, με το οποίο μπορείτε να εργαστείτε. Στο nginx, το σύστημα και οι μονάδες διαμορφώνονται χρησιμοποιώντας ένα αρχείο διαμόρφωσης. Επομένως, εάν πρέπει να αλλάξετε κάτι, τότε πρέπει να το αναζητήσετε. Συνήθως βρίσκεται στην οδηγία /etc/nginx (αλλά η διαδρομή μπορεί να αλλάξει όταν χρησιμοποιείτε άλλα συστήματα) και έχει επέκταση .conf.

Εκκίνηση, επανεκκίνηση και καταγραφή

Για να το κάνετε αυτό, πρέπει να κάνετε το εκτελέσιμο αρχείο να λειτουργεί. Η διαμόρφωση του διακομιστή nginx είναι δυνατή μόνο όταν εκτελείται. Ελέγχεται με κλήση εκτελέσιμο αρχείομε την παράμετρο -s. Για να το κάνετε αυτό, χρησιμοποιήστε την ακόλουθη σημείωση:

σήμα nginx -s

Σε αυτήν την περίπτωση, μπορείτε να αντικαταστήσετε τις ακόλουθες εντολές (πρέπει να προέρχονται από τον χρήστη που εκκίνησε το εργαλείο):

  1. Να σταματήσει. Χρησιμοποιείται για γρήγορη ολοκλήρωσηδουλειά.
  2. Γεμίζω πάλι. Η εντολή χρειάζεται για να φορτώσετε ξανά το αρχείο διαμόρφωσης. Το θέμα είναι ότι οι αλλαγές δεν θα εφαρμοστούν όσο εκτελείται το αρχείο. Και για να τεθούν σε ισχύ, είναι απαραίτητη μια επανεκκίνηση. Μόλις ληφθεί αυτό το σήμα, η κύρια διαδικασία θα αρχίσει να ελέγχει την ορθότητα της σύνταξης του αρχείου διαμόρφωσης και να προσπαθήσει να εφαρμόσει τις οδηγίες εκεί. Εάν αποτύχει, θα επαναφέρει τις αλλαγές και θα λειτουργήσει με τις παλιές ρυθμίσεις. Εάν όλα συνέβησαν με επιτυχία, τότε θα ξεκινήσουν νέες διαδικασίες εργαζομένων και οι παλιές θα σταλούν αίτημα τερματισμού.
  3. Εγκαταλείπω. Χρησιμοποιείται για την ομαλή ολοκλήρωση της εργασίας. Χρησιμοποιείται εάν χρειάζεται να περιμένετε μέχρι να ολοκληρωθεί η εξυπηρέτηση των τρεχόντων αιτημάτων.
  4. Ξανανοίγω. Κλείσιμο και άνοιγμα αρχείων καταγραφής.

Χρήση βοηθητικών προγραμμάτων

Οι διεργασίες μπορούν επίσης να διαμορφωθούν χρησιμοποιώντας εργαλεία Unix (το βοηθητικό πρόγραμμα kill θα θεωρηθεί ως παράδειγμα). Συνήθως χρησιμοποιούν έναν μηχανισμό για να στείλουν ένα σήμα στη διαδικασία απευθείας με δεδομένα. Συνδέονται χρησιμοποιώντας αναγνωριστικό. Αυτά τα δεδομένα αποθηκεύονται στο αρχείο nginx.pid. Ας πούμε ότι μας ενδιαφέρει η διαδικασία Νο 134. Στη συνέχεια για ομαλή ολοκλήρωση πρέπει να στείλουμε τις ακόλουθες πληροφορίες:

kill -s QUIT 1628

Ας υποθέσουμε ότι θέλουμε να δούμε μια λίστα με όλα τρέχοντα αρχεία. Χρησιμοποιούμε το βοηθητικό πρόγραμμα ps για αυτό. Η εντολή θα μοιάζει με αυτό:

ps -ax | grep nginx

Δηλαδή, όπως μπορείτε να δείτε, όταν χρησιμοποιείτε πρόσθετα εργαλεία, υποδεικνύεται ότι χρησιμοποιείται. Τώρα ας εστιάσουμε στο πώς γίνεται η διαμόρφωση του nginx.

Δομή αρχείου διαμόρφωσης

Η εγκατάσταση και η διαμόρφωση του nginx περιλαμβάνει εργασία με λειτουργικές μονάδες. Διαμορφώνονται χρησιμοποιώντας οδηγίες που καθορίζονται στο αρχείο διαμόρφωσης. Είναι απλά και μπλοκ. Ο πρώτος τύπος οδηγίας αποτελείται από ένα όνομα και παραμέτρους, οι οποίες διαχωρίζονται με κενά και τερματίζονται με ένα ερωτηματικό (;). Το μπλοκ έχει παρόμοια δομή. Αλλά σε αυτή την οδηγία, αντί για κατάληξη, τοποθετείται ένα σύνολο πρόσθετες οδηγίες, τα οποία τοποθετούνται σε σγουρά σιδεράκια ((οδηγίες)). Εάν μπορούν να περιέχουν τα ονόματα και τις παραμέτρους άλλων διεργασιών, τότε τέτοιες κατασκευές ονομάζονται πλαίσιο. Τα παραδείγματα περιλαμβάνουν http, τοποθεσία και διακομιστή.

Προβολή στατικού περιεχομένου

Αυτή είναι μια από τις πιο σημαντικές εργασίες που αντιμετωπίζει η διαμόρφωση του nginx. Με τον όρο διανομή στατιστικού περιεχομένου εννοούμε εικόνες και σελίδες HTML (όχι δυναμικές). Ας πούμε ότι χρειαζόμαστε εφάπαξ εργασίασχετικά με τη δημιουργία ενός συμπλέγματος nix nginx. Είναι δύσκολο να γίνει; Όχι, και ας δούμε ένα παράδειγμα. Πριν το ξεκινήσετε, είναι απαραίτητο να αναφέρετε λεπτομερώς τις συνθήκες του προβλήματος. Έτσι, ανάλογα με τα αιτήματα, τα αρχεία θα προέρχονται από διαφορετικούς τοπικούς καταλόγους. Έτσι, στο /data/www έχουμε έγγραφα HTML. Και ο κατάλογος /data/images περιέχει εικόνες. Βέλτιστη ρύθμισηΤο nginx σε αυτήν την περίπτωση απαιτεί επεξεργασία του αρχείου διαμόρφωσης, στο οποίο πρέπει να διαμορφώσετε το μπλοκ διακομιστή μέσα στο http. Δύο τοποθεσίες θα χρησιμοποιηθούν επίσης για υποστήριξη.

Υλοποίηση: διακομιστής

Επομένως, πρώτα πρέπει να δημιουργήσουμε τους ίδιους τους καταλόγους και να τοποθετήσουμε αρχεία με τις απαραίτητες επεκτάσεις σε αυτούς (πρέπει να προσθέσετε περιεχόμενο στο html). Στη συνέχεια, ανοίξτε το αρχείο ρυθμίσεων. Από προεπιλογή, περιέχει ήδη πολλά μπλοκ διακομιστή, τα οποία συνήθως σχολιάζονται. Για να επιτευχθούν βέλτιστα αποτελέσματα, αυτή η διαδικασία πρέπει να γίνει για όλα τα προεπιλεγμένα στοιχεία. Στη συνέχεια προσθέτουμε νέο μπλοκδιακομιστής με αυτόν τον κωδικό:

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

Υλοποίηση: τοποθεσία

Καθορίζεται στον εσωτερικό διακομιστή:

Η παρουσία του σήματος «/» είναι απαραίτητη για να συγκρίνετε τα ληφθέντα δεδομένα και να δείτε εάν υπάρχει μια τέτοια διεύθυνση από το επεξεργασμένο αίτημα. Εάν δεν υπάρχουν προβλήματα, τότε καθορίστε τη διαδρομή /data/www προς απαιτούμενο αρχείο, τι υπάρχει σε αυτό τοπικό σύστημα. Εάν υπάρχει αντιστοιχία με πολλά μπλοκ, τότε επιλέγεται αυτό με το μεγαλύτερο πρόθεμα. Στο παράδειγμα που δίνεται, το μήκος του είναι ίσο με ένα, δηλαδή θα χρησιμοποιηθεί αποκλειστικά εάν δεν υπάρχουν «ανταγωνιστές». Τώρα ας το βελτιώσουμε:

τοποθεσία /εικόνες/ (

Πώς μπορείτε να καταλάβετε αν ψάχνουμε για εικόνες; Τώρα ας συνδυάσουμε όλες τις εξελίξεις που έγιναν στο παρελθόν και η διαμόρφωση αυτή τη στιγμή μοιάζει με αυτό:

τοποθεσία /εικόνες/ (

Αυτή είναι μια λειτουργική επιλογή που τυχαίνει να είναι τυπική σε αυτόν τον διακομιστή τοπικός υπολογιστής, αν μεταβείτε στη διεύθυνση: http://localhost/. Πώς θα λειτουργήσει όλο αυτό;

Πώς λειτουργεί το παράδειγμα

Έτσι, όταν έρχονται αιτήματα που ξεκινούν με /images, ο διακομιστής θα στείλει αρχεία από τον αντίστοιχο κατάλογο στον χρήστη. Εάν απουσιάζει, θα μεταδοθούν πληροφορίες που υποδεικνύουν ένα σφάλμα 404 Εάν το nginx έχει ρυθμιστεί σε έναν τοπικό υπολογιστή, τότε όταν ζητάμε http://localhost/images/example.png θα λάβουμε ένα αρχείο του οποίου η τοποθεσία είναι /data/images/. example.png. Όταν καθορίζετε έναν μεμονωμένο χαρακτήρα "/", η αναζήτηση θα πραγματοποιηθεί στον κατάλογο /data/www. Αλλά αλλάξαμε μόνο τη διαμόρφωση. Για να αρχίσει να λειτουργεί, πρέπει να γίνει επανεκκίνηση. Για να το κάνετε αυτό, χρησιμοποιήστε την εντολή nginx -s reload. Στην περίπτωση που κανονική λειτουργίαδεν είναι δυνατό, τότε μπορείτε να αναζητήσετε την αιτία της δυσλειτουργίας στα αρχεία error.log και access.log που βρίσκονται στην οδηγία /usr/local/nginx/logs.

Δημιουργία ενός απλού διακομιστή μεσολάβησης

Κάποιος μπορεί να πει σχετικά με το nginx - εγκατάσταση αυτού του αντικειμένουείναι μια από τις συχνές χρήσεις (και αρκετά εύκολη, παρεμπιπτόντως). Χρησιμοποιεί την αρχή ενός διακομιστή που λαμβάνει αιτήματα και στη συνέχεια τα ανακατευθύνει στους απαραίτητους ιστότοπους. Μετά από αυτό, αναμένεται μια απάντηση από αυτούς, η οποία τους κατευθύνει σε αυτόν που ανέθεσε την εργασία. Ας δούμε λοιπόν ένα παράδειγμα δημιουργίας ενός σημείου βάσης. Θα χειρίζεται αιτήματα των χρηστών και θα τους παρέχει εικόνες από τον τοπικό κατάλογο. Έτσι, στο μπλοκ http προσθέτουμε έναν άλλο διακομιστή με το ακόλουθο περιεχόμενο:

Τώρα επιτρέψτε μου να σας το αποκρυπτογραφήσω: δημιουργείται ένας απλός διακομιστής. Θα ακούσει εάν δεν καθορίσετε ακρόαση, ο διακομιστής θα λειτουργεί στο 80. Θα εμφανιστούν όλα τα αιτήματα εντός της τοπικής περιοχής σύστημα αρχείων, τα οποία κατευθύνονται στον κατάλογο /data/up1 (φυσικά, θα πρέπει να δημιουργηθεί πριν από αυτό). Για να μπορέσετε να το ελέγξετε, πρέπει να τοποθετήσετε το αρχείο index.html εκεί. Τοποθετώντας την οδηγία root στο περιβάλλον διακομιστή, μπορούμε να χρησιμοποιήσουμε την τοποθεσία υπό οποιεσδήποτε συνθήκες (καθώς αυτό καταργεί τους περιορισμούς πρόσβασης). Τώρα εργαζόμαστε για τη δημιουργία ενός διακομιστή μεσολάβησης. Για να λειτουργήσει, χρειαζόμαστε την οδηγία proxy_pass, για την οποία το πρωτόκολλο, το όνομα και η θύρα αντικειμένου θα καθοριστούν ως παράμετροι (εάν τοπική σύνδεσηθα μοιάζει με http://localhost:8080). Θα έχετε το εξής αποτέλεσμα:

proxy_pass http://localhost:8080;

τοποθεσία /εικόνες/ (

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

τοποθεσία ~ \.(gif|jpg|png)$ (

root /data/images;

Η τελική διαμόρφωση διακομιστή μεσολάβησης μοιάζει με αυτό:

proxy_pass http://localhost:8080/;

τοποθεσία ~ \.(gif|jpg|png)$ (

root /data/images;

Θα φιλτράρει αιτήματα που έχουν τις καθορισμένες επεκτάσεις στο τέλος και θα τα στέλνει στο άτομο που ζήτησε τα αρχεία. Μην ξεχνάτε ότι εάν θέλετε να ελέγξετε το αρχείο ρυθμίσεων, θα πρέπει να το φορτώσετε ξανά. Και πιστέψτε με, αυτή είναι η απλούστερη ρύθμιση nginx. Εάν ανοίξετε το αρχείο διαμόρφωσης του διακομιστή Vkontakte ή άλλου μεγάλη εταιρεία, θα έχουν περισσότερο κώδικα από λέξεις σε αυτό το άρθρο.

Το θέμα είναι σωστό ρυθμίσεις nginxΕίναι πολύ μεγάλο και, φοβάμαι, δεν ταιριάζει στο πλαίσιο ενός άρθρου στο Habré. Σε αυτό το κείμενο προσπάθησα να μιλήσω για γενική δομή config, πιο ενδιαφέροντα μικρά πράγματα και λεπτομέρειες μπορεί να έρθουν αργότερα. :)

Ένα καλό σημείο εκκίνησης για τη ρύθμιση του nginx είναι το config που συνοδεύει τη διανομή, αλλά πολλές από τις δυνατότητες αυτού του διακομιστή δεν αναφέρονται καν σε αυτό. Πολύ περισσότερο λεπτομερές παράδειγμαδιαθέσιμο στον ιστότοπο του Igor Sysoev: sysoev.ru/nginx/docs/example.html. Ωστόσο, ας προσπαθήσουμε καλύτερα να φτιάξουμε το config μας από την αρχή, με μπριτζ και ποιήτριες. :)

Ας ξεκινήσουμε με Γενικές Ρυθμίσεις. Αρχικά, θα υποδείξουμε τον χρήστη για λογαριασμό του οποίου θα εκτελείται το nginx (είναι κακό να λειτουργεί ως root, όλοι γνωρίζουν :))

Τώρα ας πούμε στο nginx πόσες διεργασίες εργαζομένων θα γεννηθούν. Συνήθως, καλή επιλογήΜερικές φορές ο αριθμός των διεργασιών είναι ίσος με τον αριθμό των πυρήνων επεξεργαστή στον διακομιστή σας, αλλά αξίζει να πειραματιστείτε με αυτήν τη ρύθμιση. Εάν αναμένεται υψηλό φορτίο HDD, μπορείτε να κάνετε μία διαδικασία για κάθε φυσικό σκληρό δίσκο, καθώς όλη η εργασία θα εξακολουθεί να περιορίζεται από την απόδοσή του.

Worker_processes 2;

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

Ειδοποίηση Error_log /spool/logs/nginx/nginx.error_log; # Το επίπεδο ειδοποίησης "ειδοποίησης" μπορεί φυσικά να αλλάξει

Τώρα έρχεται η πολύ ενδιαφέρουσα ενότητα «γεγονότων». Σε αυτό μπορείτε να ορίσετε μέγιστο ποσόσυνδέσεις που θα επεξεργαστεί ταυτόχρονα ένας εργαζόμενος και μια μέθοδος που θα χρησιμοποιηθεί για τη λήψη ασύγχρονων ειδοποιήσεων σχετικά με συμβάντα στο λειτουργικό σύστημα. Φυσικά, μπορείτε να επιλέξετε μόνο εκείνες τις μεθόδους που είναι διαθέσιμες στο λειτουργικό σας σύστημα και συμπεριλήφθηκαν κατά τη μεταγλώττιση.

Αυτές οι ρυθμίσεις μπορούν να έχουν σημαντικό αντίκτυπο στην απόδοση του διακομιστή σας. Πρέπει να επιλέγονται μεμονωμένα, ανάλογα με το λειτουργικό σύστημα και το υλικό. Μπορώ να δώσω μόνο μερικούς γενικούς κανόνες.

Ενότητες για εργασία με εκδηλώσεις:
- η επιλογή και η δημοσκόπηση είναι συνήθως πιο αργή και φορτώνουν αρκετά τον επεξεργαστή, αλλά είναι διαθέσιμα σχεδόν παντού και λειτουργούν σχεδόν πάντα.
- kqueue και epoll - πιο αποτελεσματικά, αλλά διαθέσιμα μόνο σε FreeBSD και Linux 2.6, αντίστοιχα.
- rtsig - όμορφο αποτελεσματική μέθοδος, και υποστηρίζεται ακόμη και από πολύ παλιά Linux, αλλά μπορεί να προκαλέσει προβλήματα όταν μεγάλος αριθμόςσυνδέσεις?
- /dev/poll - από όσο ξέρω, λειτουργεί σε λίγο περισσότερο εξωτικά συστήματα, όπως το Solaris, και είναι αρκετά αποτελεσματικό σε αυτό.

παράμετρος worker_connections:
- Ο συνολικός μέγιστος αριθμός των εξυπηρετούμενων πελατών θα είναι ίσος με worker_processes *worker_connections.
- Μερικές φορές μπορούν να εργαστούν μέσα θετική πλευράακόμα και οι πιο ακραίες τιμές, όπως 128 διεργασίες, 128 συνδέσεις ανά διεργασία ή 1 διεργασία, αλλά με την παράμετρο worker_connections=16384. Στην τελευταία περίπτωση, ωστόσο, πιθανότατα θα χρειαστεί να συντονίσετε το λειτουργικό σύστημα.

Εκδηλώσεις (
Worker_connections 2048;
χρήση kqueue? # Έχουμε BSD :)
}

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

Http(
# Όλος ο κωδικός παρακάτω θα βρίσκεται μέσα σε αυτήν την ενότητα %)
# ...
}

Μέσα σε αυτό το τμήμα μπορεί να υπάρχουν κάποιες αρκετά ενδιαφέρουσες παράμετροι.

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

Η παράμετρος keepalive_timeout είναι υπεύθυνη για μέγιστος χρόνοςδιατήρηση μιας σύνδεσης keepalive εάν ο χρήστης δεν ζητήσει τίποτα μέσω αυτής. Σκεφτείτε πώς ο ιστότοπός σας στέλνει αιτήματα και προσαρμόστε αυτήν τη ρύθμιση. Για ιστότοπους που χρησιμοποιούν ενεργά AJAX, είναι καλύτερο να διατηρηθεί η σύνδεση περισσότερο για στατικές σελίδες που οι χρήστες θα διαβάζουν για μεγάλο χρονικό διάστημα, είναι καλύτερο να διακόψετε τη σύνδεση νωρίτερα. Λάβετε υπόψη ότι διατηρώντας μια ανενεργή σύνδεση διατήρησης, καταλαμβάνετε μια σύνδεση που θα μπορούσε να χρησιμοποιηθεί διαφορετικά. :)

Keepalive_timeout 15;

Ξεχωριστά, αξίζει να επισημάνετε τις ρυθμίσεις διακομιστή μεσολάβησης nginx. Τις περισσότερες φορές, το nginx χρησιμοποιείται ακριβώς ως διακομιστής μεσολάβησης, επομένως έχουν αρκετά μεγάλης σημασίας. Ειδικότερα, είναι λογικό να ορίσετε το μέγεθος της προσωρινής μνήμης για αιτήματα μεσολάβησης όχι μικρότερο από το αναμενόμενο μέγεθος απόκρισης από τον διακομιστή υποστήριξης. Με αργά (ή, αντίθετα, πολύ γρήγορα) backends, είναι λογικό να αλλάζετε τα χρονικά όρια για την αναμονή απάντησης από το backend. Θυμηθείτε, όσο μεγαλύτερα είναι αυτά τα χρονικά όρια, τόσο περισσότερο θα περιμένουν οι χρήστες σας για απάντηση εάν το backend είναι αργό.

Proxy_buffers 8 64k;
proxy_intercept_errors on?
proxy_connect_timeout 1s;
proxy_read_timeout 3s;
proxy_send_timeout 3s;

Ένα μικρό κόλπο. Σε περίπτωση που το nginx εξυπηρετεί περισσότερα από ένα εικονικός οικοδεσπότης, είναι λογικό να δημιουργήσετε έναν "προεπιλεγμένο εικονικό κεντρικό υπολογιστή" που θα επεξεργάζεται αιτήματα σε περιπτώσεις όπου ο διακομιστής δεν μπορεί να βρει άλλη εναλλακτική χρησιμοποιώντας την κεφαλίδα Host στο αίτημα πελάτη.

# προεπιλεγμένος εικονικός κεντρικός υπολογιστής
διακομιστής (
ακούστε 80 προεπιλογή?
server_name localhost;
αρνούνται όλα?
}

Αυτό μπορεί να ακολουθείται από μία (ή περισσότερες) ενότητες «διακομιστή». Κάθε ένα από αυτά περιγράφει έναν εικονικό κεντρικό υπολογιστή (τις περισσότερες φορές, με βάση το όνομα). Για τους ιδιοκτήτες πολλών τοποθεσιών σε ένα hosting ή για τους οικοδεσπότες, μπορεί να υπάρχει κάτι σαν οδηγία

Συμπεριλάβετε /spool/users/nginx/*.conf;

Τα υπόλοιπα πιθανότατα θα περιγράψουν τον εικονικό κεντρικό υπολογιστή τους απευθείας στην κύρια διαμόρφωση.

Διακομιστής (
ακούστε 80?

# Σημειώστε ότι η οδηγία διακομιστή_όνομα μπορεί να καθορίσει πολλά ονόματα ταυτόχρονα.
όνομα διακομιστή myserver.ru myserver.com;
access_log /spool/logs/nginx/myserver.access_log χρονομετρημένο;
error_log /spool/logs/nginx/myserver.error_log warn;
# ...

Ας ορίσουμε την προεπιλεγμένη κωδικοποίηση για έξοδο.

Charset utf-8;

Και ας πούμε ότι δεν θέλουμε να δεχόμαστε αιτήματα από πελάτες που έχουν μήκος μεγαλύτερο από 1 megabyte.

Client_max_body_size 1m;

Ας ενεργοποιήσουμε το SSI για τον διακομιστή και ας ζητήσουμε να δεσμευτεί όχι περισσότερο από 1 kilobyte για μεταβλητές SSI.

Si on?
ssi_value_length 1024;

Και τέλος, θα περιγράψουμε δύο τοποθεσίες, η μία από τις οποίες θα οδηγεί στο backend, στον Apache που εκτελείται στη θύρα 9999 και η δεύτερη θα στέλνει στατικές εικόνες από το τοπικό σύστημα αρχείων. Για δύο τοποθεσίες αυτό δεν έχει νόημα, αλλά για έναν μεγαλύτερο αριθμό από αυτές είναι επίσης λογικό να ορίζεται αμέσως μια μεταβλητή στην οποία θα αποθηκευτεί ο ριζικός κατάλογος διακομιστή και στη συνέχεια να χρησιμοποιείται στις περιγραφές τοποθεσιών.

Το Nginx είναι ένας διακομιστής ιστού και διακομιστής μεσολάβησης email που είναι δημόσια διαθέσιμος από το 2004. Η ανάπτυξη του έργου ξεκίνησε το 2002 στα ρωσικά το όνομα ακούγεται σαν engine-ex. Το να είσαι έργο χεριών διάσημος προγραμματιστής, Igor Sysoev, το Nginx προοριζόταν αρχικά για την εταιρεία Rambler. Έχει σχεδιαστεί για λειτουργικά συστήματα που ανήκουν στην ομάδα τύπου Unix. Το συγκρότημα έχει δοκιμαστεί με επιτυχία σε OpenBSD, FreeBSD, Linux, Mac OS X, Solaris. Στην πλατφόρμα Microsoft WindowsΤο Nginx άρχισε να λειτουργεί με την εμφάνιση της έκδοσης 0.7.52 της δυαδικής συναρμολόγησης.

Τα στατιστικά στοιχεία για τον Μάρτιο του 2011 δείχνουν ότι ο αριθμός των τοποθεσιών που εξυπηρετούνται από την Nginx έχει ήδη ξεπεράσει τα 22 εκατομμύρια. Σήμερα το Nginx χρησιμοποιείται από γνωστά έργα όπως τα Rambler, Begun, Yandex, SourceForge.net, WordPress.com, vkontakte.ru και άλλα. Μαζί με το lighttpd, το Nginx χρησιμοποιείται για την εξυπηρέτηση στατικού περιεχομένου που δημιουργείται από μια «άβολη» web εφαρμογή που λειτουργεί «υπό την εξουσία» άλλου διακομιστή ιστού.
Αλλά προτού εμβαθύνουμε στη ζούγκλα των λειτουργικών χαρακτηριστικών του Nginx, θα ήταν χρήσιμο να θυμηθούμε τι είναι ένας διακομιστής ιστού γενικά και ένας διακομιστής μεσολάβησης ειδικότερα.

Διακομιστής Ιστού και διακομιστής μεσολάβησης

Διακομιστής Ιστούείναι ένας διακομιστής που δέχεται αιτήματα HTTP από προγράμματα περιήγησης ιστού και άλλους πελάτες και εκδίδει απαντήσεις HTTP σε αυτούς. Τα τελευταία συνήθως αντιπροσωπεύονται σελίδα HTML, ροή πολυμέσων, εικόνα, αρχείο, άλλα δεδομένα. Ως διακομιστής ιστού νοείται λογισμικό, εκτέλεση λειτουργιών διακομιστή ιστού και υλικού. Η ανταλλαγή των δεδομένων και των ζητούμενων πληροφοριών πραγματοποιείται μέσω του πρωτοκόλλου HTTP.

Πρόσθεσε στη λίστα πρόσθετες λειτουργίεςΟι διακομιστές ιστού περιλαμβάνουν: εξουσιοδότηση και έλεγχο ταυτότητας χρηστών, καταγραφή της πρόσβασής τους σε πόρους, υποστήριξη HTTPS για ασφαλή επικοινωνία με πελάτες και άλλα. Ο πιο συχνά χρησιμοποιούμενος διακομιστής ιστού σε λειτουργικά συστήματα τύπου Unix είναι ο Apache. Το Nginx κατέχει αυτήν τη στιγμή την τρίτη θέση στη λίστα με τις προτιμήσεις πελατών.

Διακομιστής μεσολάβησηςεπιτρέπει στους πελάτες να αντιμετωπίσουν ερωτήματα αναζήτησηςσε υπηρεσίες δικτύου σε έμμεση μορφή. Δηλαδή, είναι ένας διακομιστής που ειδικεύεται στην ανακατεύθυνση αιτημάτων πελατών σε άλλους διακομιστές. Με τη σύνδεση σε έναν διακομιστή μεσολάβησης και ζητώντας έναν πόρο που βρίσκεται σε άλλο διακομιστή, ο πελάτης έχει την ευκαιρία να διατηρήσει την ανωνυμία του και να προστατεύσει τον υπολογιστή από επιθέσεις δικτύου. Ο διακομιστής μεσολάβησης παρέχει τα ζητούμενα δεδομένα στον πελάτη είτε από τη δική του κρυφή μνήμη (εάν υπάρχει) είτε έχοντας λάβει από καθορισμένο διακομιστή. Σε ορισμένες περιπτώσεις (για την επίτευξη των παραπάνω στόχων), η απόκριση διακομιστή, όπως και το αίτημα πελάτη, μπορεί να αλλάξει από τον διακομιστή μεσολάβησης.

Ο απλούστερος διακομιστής μεσολάβησης είναι το Network Address Translator ή το NAT. Το 2000, ενσωματώθηκε ο διακομιστής μεσολάβησης NAT Διανομή Windows. Οι διακομιστές μεσολάβησης, όπως κάθε φαινόμενο, έχουν δύο όψεις του νομίσματος, δηλαδή μπορούν να χρησιμοποιηθούν και για καλό και για κακό. Για παράδειγμα, με τη βοήθειά τους, όσοι φοβούνται κυρώσεις για τις απρεπείς ενέργειές τους στο Διαδίκτυο κρύβουν τις διευθύνσεις IP τους...

Λειτουργικό εύρος Nginx:

  • συντήρηση αρχείων ευρετηρίου διακομιστή, στατικά ερωτήματα, δημιουργία περιγραφέων κρυφής μνήμης ανοιχτά αρχεία, λίστα αρχείων;
  • επιταχυνόμενος διακομιστής μεσολάβησης, στοιχειώδης κατανομή φορτίου, ανοχή σφαλμάτων.
  • Υποστήριξη προσωρινής αποθήκευσης κατά τη διάρκεια ταχείας διαμεσολάβησης και FastCGI.
  • υποστήριξη για FastCGI (επιταχυνόμενους) και διακομιστές memcached.
  • αρθρωτότητα, φίλτρα, συμπεριλαμβανομένης της συνέχισης (εύρος byte) και της συμπίεσης (gzip).
  • Έλεγχος ταυτότητας HTTP, τμηματικές αποκρίσεις, φίλτρο SSI.
  • παράλληλη εκτέλεση πολλών υποερωτημάτων σε μια σελίδα που υποβάλλεται σε επεξεργασία μέσω του FastCGI ή ενός διακομιστή μεσολάβησης στο φίλτρο SSI.
  • Υποστήριξη StartTLS και SSL.
  • δυνατότητα υποστήριξης της ενσωματωμένης Perl.
  • απλός έλεγχος ταυτότητας (USER/PASS, LOGIN).
  • ανακατεύθυνση διακομιστή (διακομιστής μεσολάβησης IMAP/POP3) του χρήστη στο backend IMAP/POP3 χρησιμοποιώντας έναν εξωτερικό διακομιστή ελέγχου ταυτότητας (HTTP).

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

Αρχιτεκτονική και Διαμόρφωση

Οι διεργασίες Worker στο Nginx εξυπηρετούν ταυτόχρονα πολλαπλές συνδέσεις, παρέχοντάς τους κλήσεις OS (λειτουργικό σύστημα) epoll (Linux), select και kqueue (FreeBSD). Τα δεδομένα που λαμβάνονται από τον πελάτη αναλύονται χρησιμοποιώντας μια μηχανή κατάστασης. Το αναλυμένο αίτημα υποβάλλεται σε επεξεργασία από μια αλυσίδα μονάδων που καθορίζονται από τη διαμόρφωση. Η απάντηση στον πελάτη δημιουργείται σε buffer, τα οποία μπορούν να παραπέμπουν σε ένα τμήμα ενός αρχείου ή να αποθηκεύουν δεδομένα στη μνήμη. Η ακολουθία μεταφοράς δεδομένων στον πελάτη καθορίζεται από τις αλυσίδες στις οποίες ομαδοποιούνται τα buffer.

Δομικά, ο διακομιστής Nginx HTTP χωρίζεται σε εικονικούς διακομιστές, οι οποίοι με τη σειρά τους χωρίζονται σε τοποθεσίες. Εικονικός διακομιστήςή οδηγία, μπορείτε να καθορίσετε θύρες και διευθύνσεις για τη λήψη συνδέσεων. Για τη θέση, μπορείτε να καθορίσετε ένα ακριβές URI, μέρος ενός URI ή μια κανονική έκφραση Για τη διαχείριση της ηλεκτρονικής μνήμης, χρησιμοποιούνται ομάδες, οι οποίες είναι μια ακολουθία προεπιλεγμένων μπλοκ μνήμης. Ένα μπλοκ, που αρχικά διατέθηκε για την πισίνα, έχει μήκος από 1 έως 16 kilobyte. Χωρίζεται σε περιοχές - κατεχόμενες και μη. Καθώς το τελευταίο γεμίζει, η εκχώρηση ενός νέου αντικειμένου εξασφαλίζεται με το σχηματισμό ενός νέου μπλοκ.

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

Οφέλη του Nginx

Το Nginx θεωρείται πολύ γρήγορο Διακομιστής HTTP. Αντί για Apache ή μαζί με αυτό, το Nginx χρησιμοποιείται για την επιτάχυνση της επεξεργασίας αιτημάτων και τη μείωση του φόρτου στον διακομιστή. Γεγονός είναι ότι οι περισσότεροι χρήστες δεν χρειάζονται τις τεράστιες δυνατότητες που είναι εγγενείς στη σπονδυλωτή αρχιτεκτονική του Apache. Πρέπει να πληρώσετε για αυτήν την αζήτητη λειτουργικότητα με σημαντική κατανάλωση πόρων συστήματος. Οι συνηθισμένοι ιστότοποι, κατά κανόνα, χαρακτηρίζονται από σαφή «κυριαρχία» στατικών αρχείων (εικόνες, αρχεία στυλ, JavaScript), αντί για σενάρια. Δεν απαιτείται ειδική λειτουργικότητα για τη μεταφορά αυτών των αρχείων σε έναν επισκέπτη πόρων, καθώς η εργασία είναι πολύ απλή. Αυτό σημαίνει ότι ο διακομιστής ιστού για την επεξεργασία τέτοιων αιτημάτων πρέπει να είναι απλός και ελαφρύς, όπως το Nginx.

Τρόποι χρήσης του Nginx

Σε ξεχωριστή θύρα/IP.Εάν ο πόρος είναι κορεσμένος με εικόνες ή αρχεία για λήψη, το Nginx μπορεί να ρυθμιστεί σε ξεχωριστή θύρα ή IP και να διανείμει στατικό περιεχόμενο μέσω αυτού. Για να το κάνετε αυτό, ωστόσο, θα πρέπει να ασχοληθείτε λίγο με την αλλαγή των συνδέσμων στον ιστότοπο. Στο μεγάλες ποσότητεςΕίναι λογικό να δημιουργείτε ερωτήματα για στατικά αρχεία ξεχωριστός διακομιστήςκαι εγκαταστήστε το Nginx σε αυτό.

Επιταχυνόμενος διακομιστής μεσολάβησης. Με αυτήν την επιλογή, όλα τα αιτήματα επισκεπτών πηγαίνουν πρώτα στο Nginx. Αιτήματα για στατικά αρχεία (για παράδειγμα, εικόνες, απλό HTML, αρχείο JavaScript ή CSS) Το Nginx το επεξεργάζεται ανεξάρτητα. Εάν ένας χρήστης αποκτήσει πρόσβαση σε ένα συγκεκριμένο σενάριο, θα ανακατευθύνει το αίτημα στο τμήμα Apache. Δεν χρειάζεται να κάνετε μετασχηματισμούς με τον κώδικα του ιστότοπου.

Εάν το κανάλι από τον διακομιστή στον επισκέπτη και αντίστροφα είναι αργό, αυτή η χρήση του Nginx μπορεί να δώσει πρόσθετο αποτέλεσμα. Το Nginx μεταβιβάζει το αίτημα που έλαβε από τον επισκέπτη στον Apache για επεξεργασία. Μετά την επεξεργασία του αιτήματος, ο Apache προωθεί τη σελίδα στο Nginx και κλείνει τη σύνδεση με μια αίσθηση ολοκλήρωσης. Το Nginx μπορεί τώρα να στείλει μια σελίδα σε έναν χρήστη για όσο διάστημα επιθυμεί, πρακτικά χωρίς να καταναλώνει πόρους του συστήματος. Το έργο του Apache στη θέση του θα συνοδευόταν από ένα αδικαιολόγητα υψηλό φορτίο στη μνήμη όταν λειτουργεί σχεδόν σε αδράνεια. Παρεμπιπτόντως, αυτή η περίπτωση χρήσης για το Nginx έχει άλλο όνομα: "frontend to Apache".

Nginx συν FastCGI.Το Apache μπορεί να μην χρειάζεται καθόλου εάν ο διερμηνέας της γλώσσας στην οποία είναι γραμμένα τα σενάρια του ιστότοπου υποστηρίζει την τεχνολογία FastCGI. Τέτοιες γλώσσες περιλαμβάνουν, για παράδειγμα, PHP, Perl και πολλές άλλες. Ωστόσο, σε αυτήν την περίπτωση ίσως χρειαστεί να τροποποιήσετε τους κωδικούς του σεναρίου.

Υπάρχουν πολλά λεπτομερή υλικά σχετικά με τον τρόπο εγκατάστασης και διαμόρφωσης του Nginx στο Διαδίκτυο. Μπορείτε να μάθετε περισσότερα για το Nginx στον ιστότοπο του προγραμματιστή του Igor Sysoev.