τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
[Εισαγωγή]: Το Nginx παρέχει μια ποικιλία υποστήριξης ανάστροφου διακομιστή μεσολάβησης επιπέδου εφαρμογής, συμπεριλαμβανομένων των proxy_pass, uwsgi_pass, fastcgi_pass και scgi_pass, κ.λπ. Μεταξύ αυτών, η οδηγία proxy_pass μπορεί να δεχτεί μια παράμετρο URL για την υλοποίηση ενός πρωτοκόλλου μεσολάβησης HTTP/HTTPS στην εφαρμογή SCGI (Simple Common Gateway Interface). Αυτές οι οδηγίες επιτρέπουν στο Nginx να χειρίζεται με ευελιξία διαφορετικούς τύπους υπηρεσιών υποστήριξης και εφαρμογών. Το επίκεντρο αυτού του άρθρου είναι το scgi_pass.
SCGIΟ διακομιστής μεσολάβησης (Simple Common Gateway Interface) είναιNginx Μία από τις σημαντικές μεθόδους αντίστροφου διακομιστή μεσολάβησης που υποστηρίζεται. σε,SCGIείναι μια απλοποιημένη έκδοσηCGIΠρωτόκολλο (Common Gateway Interface), σχεδιασμένο να παρέχει έναν πιο αποτελεσματικό τρόπο σύνδεσηςΙστός Διακομιστές και εφαρμογές.με παραδοσιακόCGIσε σύγκριση με,SCGIΜε τη χρήση μόνιμων συνδέσεων και μιας απλοποιημένης μορφής πρωτοκόλλου, η επιβάρυνση ανά αίτημα μειώνεται σημαντικά.
SCGIΤο πρωτόκολλο ορίζει έναν τυποποιημένο τρόποΙστός Περάστε πληροφορίες αιτημάτων και λάβετε απαντήσεις μεταξύ του διακομιστή και της εφαρμογής. Χρησιμοποιεί μια απλή μορφή κειμένου για τη μετάδοση πληροφοριών κεφαλίδας αιτήματος, ακολουθούμενη από το σώμα του αιτήματος (εάν υπάρχει).Αυτό το σχέδιο κάνειSCGIΕίναι εύκολο στην εφαρμογή και παρέχει καλή απόδοση.
υπάρχειΙστόςΣτην αρχιτεκτονική εφαρμογών,SCGIΕνήργησε ωςΙστόςδιακομιστή (όπωςNginx ) και εφαρμογές back-end.πότεNginxελήφθη από τον πελάτηHTTPΌταν ζητηθεί, μπορεί να μετατρέψει αυτά τα αιτήματα σεSCGIμορφή και μετά περάστεSCGIΤο πρωτόκολλο αποστέλλεται στον διακομιστή εφαρμογών υποστήριξης.
Αυτή η προσέγγιση είναι ιδιαίτερα κατάλληλη για όσους υποστηρίζουν εγγενώςSCGIΓλώσσες προγραμματισμού πρωτοκόλλου και πλαίσια όπωςΠύθωνΜερικά αποΙστόςπλαίσια (π.χ.Flup)ήΡουμπίνιΟρισμένοι διακομιστές εφαρμογών (όπωςΜονόκερος ).με τη χρήσηSCGI, αυτές οι εφαρμογές μπορούν να αποφευχθούνHTTPΤα γενικά έξοδα ανάλυσης, απευθείας επεξεργασία απόΙστόςαιτήματα στον διακομιστή, βελτιώνοντας έτσι τη συνολική απόδοση.
Σε πρακτικές εφαρμογές,SCGIΤα σενάρια χρήσης περιλαμβάνουν, αλλά δεν περιορίζονται σε:
υψηλή απόδοσηΙστόςΕφαρμογή: Για εφαρμογές που πρέπει να χειριστούν μεγάλο αριθμό ταυτόχρονων αιτημάτων,SCGIΜπορεί να προσφέρει καλύτερα από τα παραδοσιακάCGIΚαλύτερη απόδοση.
Μακροχρόνιες διεργασίες: Ορισμένες εφαρμογές που πρέπει να διατηρηθούν σε κατάσταση ή είναι μακροχρόνιες μπορούνSCGIκαιΙστόςΟ διακομιστής διατηρεί μια μόνιμη σύνδεση.
Βελτιστοποιήσεις για συγκεκριμένες γλώσσες: Μπορεί να χρησιμοποιούνται ορισμένες γλώσσες προγραμματισμού ή πλαίσιαSCGIδείχνουν καλύτερη απόδοση ή απλούστερη υλοποίηση.
από μέσαNginxχρησιμοποιείται σεscgi_pass
εντολή, οι διαχειριστές μπορούν εύκολα να τοποθετήσουνHTTPΠροώθηση αιτήματος για υποστήριξηSCGI διακομιστή εφαρμογών υποστήριξης.Αυτό όχι μόνο απλοποιεί τη διαδικασία διαμόρφωσης αλλά παρέχει επίσης ευκαιρίες για βελτιστοποίησηΙστόςΗ απόδοση της εφαρμογής παρέχει ευελιξία.
SCGIΤο πρωτόκολλο (Simple Common Gateway Interface) είναι ένα απλοποιημένοCGIπρωτόκολλο, ειδικά σχεδιασμένο γιαΙστός Επικοινωνία μεταξύ διακομιστή και εφαρμογής. Έχει τα ακόλουθα κύρια χαρακτηριστικά:
Απλότητα:SCGI Το πρωτόκολλο χρησιμοποιεί μια απλή μορφή κειμένου για τη μετάδοση πληροφοριών κεφαλίδας αιτήματος, γεγονός που καθιστά την υλοποίηση και τον εντοπισμό σφαλμάτων του πρωτοκόλλου σχετικά εύκολη. Η σχεδιαστική φιλοσοφία του πρωτοκόλλου είναι να διατηρείται απλό παρέχοντας ταυτόχρονα επαρκή λειτουργικότητα.
Επίμονες συνδέσεις: έναντι παραδοσιακώνCGIδιαφορετικός,SCGI Υποστηρίζει μόνιμες συνδέσεις.αυτό σημαίνει αSCGI Ο διακομιστής μπορεί να χειριστεί πολλαπλά αιτήματα χωρίς να δημιουργήσει μια νέα διαδικασία ή νήμα για κάθε αίτημα. Αυτό μειώνει σημαντικά την επιβάρυνση των πόρων του συστήματος και βελτιώνει τη συνολική απόδοση.
Χαμηλά γενικά έξοδα: λόγωSCGI Ο σχεδιασμός του πρωτοκόλλου είναι απλός και δημιουργεί ελάχιστα επιπλέον έξοδα κατά την επεξεργασία αιτημάτων.Αυτό κάνειSCGIΙδιαίτερα κατάλληλο για χειρισμό υψηλής ταυτόχρονης λειτουργίαςΙστόςΣενάρια εφαρμογής.
ευκαμψία:SCGI Το πρωτόκολλο επιτρέπει τη μετάδοση αυθαίρετων πληροφοριών κεφαλίδας, γεγονός που παρέχει στους προγραμματιστές μεγάλη ευελιξία. Οι προγραμματιστές μπορούν να προσαρμόσουν τις πληροφορίες κεφαλίδας ανάλογα με τις ανάγκες για να ικανοποιήσουν τις απαιτήσεις συγκεκριμένων εφαρμογών.
Γλωσσική ανεξαρτησία:SCGI Ο σχεδιασμός του πρωτοκόλλου είναι ανεξάρτητος από τη γλώσσα προγραμματισμού.Αυτό σημαίνει ότι μπορεί να εφαρμοστεί σε οποιαδήποτε γλώσσα προγραμματισμού, επιτρέποντας στους προγραμματιστές να επιλέξουν τη γλώσσα που ταιριάζει καλύτερα στις ανάγκες του έργου τους.SCGIυπηρέτης.
Αν καιSCGIκαιHTTPχρησιμοποιούνται γιαΙστόςΠρωτόκολλα επικοινωνίας, αλλά έχουν σημαντικές διαφορές ως προς τους σκοπούς σχεδιασμού και τα σενάρια χρήσης:
Στοχεύστε χρήστες:HTTPΤο πρωτόκολλο χρησιμοποιείται κυρίως από πελάτες (όπως προγράμματα περιήγησης) καιΙστόςεπικοινωνία μεταξύ διακομιστών, ενώSCGIΗ συμφωνία επικεντρώνεται σεΙστόςΕπικοινωνία μεταξύ διακομιστή και εφαρμογών υποστήριξης.
Πολυπλοκότητα πρωτοκόλλου:HTTPΤο πρωτόκολλο είναι σχετικά πολύπλοκο και περιέχει μεγάλο αριθμό πληροφοριών κεφαλίδας και μεθόδων για την υποστήριξη διαφόρωνΙστός διαδραστική σκηνή. Σε αντίθεση,SCGIΤο πρωτόκολλο είναι απλούστερο και περιέχει μόνο τις απαραίτητες πληροφορίες για την παράδοση αιτημάτων και απαντήσεων.
Θέματα απόδοσης: σεΙστόςΧρησιμοποιείται μεταξύ διακομιστή και εφαρμογήςSCGIαντίHTTPΗ επιβάρυνση της ανάλυσης πρωτοκόλλου μπορεί να μειωθεί επειδήSCGI Η μορφή είναι απλούστερη και πιο άμεση. Αυτό μπορεί να επιφέρει σημαντικές βελτιώσεις απόδοσης σε σενάρια υψηλού συγχρονισμού.
Διαχείριση σύνδεσης:HTTP/1.1Η έννοια των επίμονων συνδέσεων εισήχθη, αλλά σεΙστόςΧρησιμοποιείται μεταξύ διακομιστή και εφαρμογήςHTTPΕνδέχεται να απαιτείται ακόμη πρόσθετη διαχείριση σύνδεσης.SCGIΗ ενσωματωμένη υποστήριξη για μόνιμες συνδέσεις απλοποιεί αυτή τη διαδικασία.
σκηνές που θα χρησιμοποιηθούν:HTTPΕίναι το βασικό πρωτόκολλο του Διαδικτύου και είναι εφαρμόσιμο σε διάφοραΙστόςσενάριο επικοινωνίας.SCGIχρησιμοποιείται κυρίως γιαΙστόςΕσωτερική επικοινωνία μεταξύ διακομιστών και εφαρμογών back-end, ειδικά σε σενάρια όπου απαιτείται επεξεργασία υψηλής απόδοσης.
SCGIκαιFastCGIΟλαCGIΜια βελτιωμένη έκδοση τουΙστός Απόδοση εφαρμογής. Έχουν κάποιες ομοιότητες, αλλά και μερικές βασικές διαφορές:
Πολυπλοκότητα πρωτοκόλλου:SCGIαναλογία συμφωνίαςFastCGIαπλούστερο.SCGIΧρησιμοποιεί μια απλή μορφή κειμένου για τη μετάδοση πληροφοριών κεφαλίδας, ενώFastCGI Χρησιμοποιήστε δυαδική μορφή.Αυτό κάνειSCGIΠιο εύκολο στην εφαρμογή και τον εντοπισμό σφαλμάτων, αλλά μπορεί να είναι ελαφρώς κατώτεροFastCGIεκτέλεση.
Πολυπλεξία:FastCGIΥποστηρίζει το χειρισμό πολλαπλών αιτημάτων σε μία μόνο σύνδεση (πολυπλεξία), ενώSCGI Συνήθως μόνο ένα αίτημα υποβάλλεται σε επεξεργασία ανά σύνδεση. Αυτό σημαίνει ότι σε ορισμένα σενάρια υψηλού συγχρονισμού,FastCGIΜπορεί να αποδώσει καλύτερα.
Τύπος εγγραφής:FastCGIΟρίζονται αρκετοί τύποι εγγραφών (π.χ.STDIN、STDOUT、STDERRκ.λπ.), επιτρέποντας λεπτότερο έλεγχο.SCGIΥιοθετείται μια απλούστερη προσέγγιση, εστιάζοντας κυρίως στη διαβίβαση αιτημάτων και απαντήσεων.
Γλωσσική υποστήριξη: λόγωFastCGI Όσο περισσότερο υπάρχει, τόσο πιο διαδεδομένη είναι πιθανό να είναι η υποστήριξή του σε διάφορες γλώσσες προγραμματισμού και πλαίσια. Ωστόσο,SCGIΗ απλότητά του καθιστά την εφαρμογή του σε ορισμένες γλώσσες δυνητικά πιο απλή.
Απόδοση: Στις περισσότερες περιπτώσεις,SCGIκαιFastCGI Η διαφορά απόδοσης δεν είναι σημαντική. Η επιλογή του πρωτοκόλλου που θα χρησιμοποιηθεί εξαρτάται συχνά από συγκεκριμένες ανάγκες εφαρμογής, υποστήριξη γλώσσας ανάπτυξης και προσωπικές προτιμήσεις.
υπάρχειNginxΔιαμόρφωση,scgi_pass
Η οδηγία χρησιμοποιείται για τη διαβίβαση του αιτήματοςSCGI Βασικές οδηγίες για τον διακομιστή.ορίζειNginxστην οποία θα πρέπει να διαβιβαστεί το αίτημαSCGIΔιακομιστής ή ομάδα διακομιστών.
scgi_pass
Η βασική σύνταξη της εντολής είναι η εξής:
scgi_pass address;
σε,address
Μπορεί να είναι στις ακόλουθες μορφές:
Για παράδειγμα:scgi_pass localhost:9000;
σε αυτήν την περίπτωση,NginxΤο αίτημα θα προωθηθεί στον διακομιστή που λειτουργεί στον τοπικό κεντρικό υπολογιστή και ακούει στη θύρα 9000.SCGIυπηρέτης.
Για παράδειγμα:scgi_pass unix:/tmp/scgi.socket;
εδώ,Nginxθα περάσει το καθορισμένοUnixυποδοχή τομέα μεSCGI Επικοινωνία διακομιστή.Αυτή η μέθοδος χρησιμοποιείται συνήθωςSCGIδιακομιστή μεNginxΗ λειτουργία στο ίδιο μηχάνημα μπορεί να προσφέρει καλύτερη απόδοση.
Για παράδειγμα:scgi_pass scgi_backend;
Σε αυτή τη χρήση,scgi_backend
είναι ένα σεNginx Μια προκαθορισμένη ομάδα διακομιστή upstream στο αρχείο διαμόρφωσης. Αυτό σας επιτρέπει να εφαρμόσετε προηγμένες λειτουργίες όπως η εξισορρόπηση φορτίου και το failover.
scgi_pass
Οι οδηγίες είναι συνήθως μέσαlocation
χρησιμοποιείται σε μπλοκ για να χειριστεί συγκεκριμέναURL μονοπάτι. Για παράδειγμα:
location /scgi/ {
scgi_pass localhost:9000;
include scgi_params;
}
Σε αυτό το παράδειγμα, όλα/scgi/
Τα αιτήματα στην αρχή θα προωθούνται στην τοπική θύρα 9000.SCGIυπηρέτης.
include scgi_params;
Η δήλωση περιέχει ένα προκαθορισμένο αρχείο διαμόρφωσης, το οποίο ορίζει μια σειρά απόSCGI παράμετρος.Αυτές οι παράμετροι καθορίζουνNginxπως ναHTTPΟι πληροφορίες αιτήματος μετατρέπονται σεSCGIπαρακαλώ.
Αξίζει να σημειωθεί ότιscgi_pass
Οι οδηγίες μπορούν να συνδυαστούν με άλλεςNginx Οι οδηγίες χρησιμοποιούνται σε συνδυασμό για την επίτευξη πιο περίπλοκων διαμορφώσεων.Για παράδειγμα, μπορείτε να χρησιμοποιήσετεif
Δηλώσεις υπό όρους για να επιλέξετε διαφορετικές επιλογές με βάση διαφορετικές συνθήκεςSCGIυπηρέτης:
location / {
if ($request_method = POST) {
scgi_pass localhost:9001;
}
scgi_pass localhost:9000;
include scgi_params;
}
Σε αυτό το παράδειγμα,ΘΕΣΗΤα αιτήματα προωθούνται στη θύρα 9001, ενώ όλα τα άλλα αιτήματα προωθούνται στη θύρα 9000.
scgi_pass
καιproxy_pass
Είναι όλες κοινώς χρησιμοποιούμενες οδηγίες αντίστροφου διακομιστή μεσολάβησης και όλες προωθούν αιτήματα στον διακομιστή υποστήριξης.
σε,scgi_pass
Σχεδιασμένο για χρήση με υποστήριξηSCGIΠρωτόκολλο επικοινωνίας με διακομιστή υποστήριξης.SCGIείναι ένα απλοποιημένοCGIπρωτόκολλο, σχεδιασμένο γιαΙστός Αποτελεσματική επικοινωνία μεταξύ διακομιστών και εφαρμογών. Σε αντίθεση,proxy_pass
είναι μια γενικότερη οδηγία που μπορεί να χρησιμοποιηθεί για την πληροφόρηση μιας ποικιλίας πρωτοκόλλων, μεταξύ των οποίωνHTTP、HTTPS、FastCGIΠερίμενε.
Σε χρήσηscgi_pass
ώρα,Nginxθα λάβωHTTPΤο αίτημα μετατρέπεται σεSCGIμορφή και στη συνέχεια αποστέλλεται στο backendSCGI υπηρέτης. Κατά τη διάρκεια αυτής της διαδικασίας,Nginx Θα χειριστεί τη μετατροπή πρωτοκόλλου για να διασφαλίσει ότι ο διακομιστής υποστήριξης μπορεί να κατανοήσει και να επεξεργαστεί σωστά το αίτημα.καιproxy_pass
Συνήθως χρησιμοποιείται για την προώθηση της αίτησης στον διακομιστή υποστήριξης ανέπαφο χωρίς μετατροπή πρωτοκόλλου.
Μια άλλη σημαντική διαφορά είναι ο τρόπος διαμόρφωσης.scgi_pass
Συνήθως απαιτεί συνεργασίαscgi_param
οδηγία για χρήση για τον καθορισμόSCGI Παράμετροι που απαιτούνται από το πρωτόκολλο. Για παράδειγμα:
location /app/ {
scgi_pass localhost:9000;
include scgi_params;
scgi_param SCRIPT_FILENAME /path/to/app$fastcgi_script_name;
}
Σε αυτό το παράδειγμα,include scgi_params
εισήγαγε προκαθορισμένοSCGIπαραμέτρους, ενώscgi_param
Οι οδηγίες χρησιμοποιούνται για τον καθορισμό πρόσθετων παραμέτρων.
Σε αντίθεση,proxy_pass
Η διαμόρφωση είναι συνήθως απλούστερη και πιο απλή:
location /api/ {
proxy_pass http://backend_server;
}
Από πλευράς απόδοσης,scgi_pass
καιproxy_pass
Το καθένα έχει τα δικά του πλεονεκτήματα.Για χρήση ειδικά σχεδιασμένοSCGIεφαρμογή πρωτοκόλλου,scgi_pass
μπορεί να παρέχει καλύτερη απόδοση επειδή αποφεύγειHTTP επιβάρυνση πρωτοκόλλου. Ωστόσο,proxy_pass
Η ευελιξία του το καθιστά πιο ευέλικτο και μπορεί να προσαρμοστεί σε διάφορους διακομιστές υποστήριξης και πρωτόκολλα.
Η ασφάλεια είναι επίσης μια πτυχή που πρέπει να ληφθεί υπόψη.επειδήscgi_pass
αφιερωμένη στηνSCGI πρωτόκολλο, το οποίο μπορεί να παρέχει καλύτερη ασφάλεια σε ορισμένες περιπτώσεις επειδή περιορίζει τον τρόπο επικοινωνίας με τον διακομιστή υποστήριξης.καιproxy_pass
Λόγω της ευελιξίας του, ενδέχεται να απαιτούνται πρόσθετες ρυθμίσεις παραμέτρων για τη διασφάλιση της ασφάλειας, ειδικά κατά το χειρισμό ευαίσθητων δεδομένων.
Σε πρακτικές εφαρμογές, επιλέξτε τη χρήσηscgi_pass
ακόμηproxy_pass
Εξαρτάται κυρίως από τα χαρακτηριστικά και τις απαιτήσεις της εφαρμογής backend.Εάν η εφαρμογή υποστήριξης έχει σχεδιαστεί ειδικά για χρήσηSCGIσυμφωνία, λοιπόνscgi_pass
Ίσως είναι καλύτερη επιλογή.Εάν το backend είναι τυπικόΙστόςΔιακομιστής ή εφαρμογή, δεν υποστηρίζεται ή απαιτείταιSCGI,Ετσιproxy_pass
μπορεί να είναι καταλληλότερο.
scgi_pass
Η οδηγία είναιNginxχρησιμοποιείται στην επεξεργασίαSCGI Ζητούνται βασικές οδηγίες (Simple Common Gateway Interface). Ο τρόπος λειτουργίας περιλαμβάνει πολλά βήματα, από τη λήψη ενός αιτήματος πελάτη έως την επιστροφή μιας επεξεργασμένης απάντησης στον πελάτη.
Πρώτα απ 'όλα, πότεNginxΛήφθηκε από πελάτηHTTP Όταν υποβάλλεται ένα αίτημα, θα αποφασίσει πώς θα χειριστεί το αίτημα με βάση τους κανόνες στο αρχείο διαμόρφωσης.Εάν το αίτημα ταιριάζει, χρησιμοποιήστεscgi_pass
το μπλοκ τοποθεσίας της εντολής,Nginxθα ξεκινήσειSCGIροή επεξεργασίας.
υπάρχειSCGIΚατά τη διαδικασία επεξεργασίας,NginxΑρχικά, θα δημιουργήσουμε τοSCGI Σύνδεση διακομιστή.Αυτή η σύνδεση μπορεί να είναιTCPπρίζα ήUnixΥποδοχή τομέα, ανάλογα μεscgi_pass
Η διεύθυνση που καθορίζεται στην οδηγία. Εάν χρησιμοποιείται μια ομάδα διακομιστών ανάντη,NginxΈνας συγκεκριμένος διακομιστής επιλέγεται επίσης με βάση τον διαμορφωμένο αλγόριθμο εξισορρόπησης φορτίου.
Αφού δημιουργηθεί η σύνδεση,NginxθαHTTPΤο αίτημα μετατρέπεται σεSCGI Μορφή.Αυτή η διαδικασία περιλαμβάνει τη δημιουργίαSCGIΚεφαλίδα αιτήματος και σώμα αιτήματος.SCGIΗ κεφαλίδα αιτήματος περιέχει μια σειρά από ζεύγη κλειδιών-τιμών που παρέχουν μεταδεδομένα σχετικά με το αίτημα, όπως μέθοδος αιτήματος, διαδρομή, συμβολοσειρά ερωτήματος, πελάτηIP Διεύθυνση κλπ.Οι περισσότερες από αυτές τις πληροφορίες προέρχονται από το πρωτότυποHTTPκεφαλίδες αιτήματος, αλλά μπορεί επίσης να περιλαμβάνειscgi_param
Πρόσθετες παράμετροι που ορίζονται από την εντολή.
SCGI Η μορφή της κεφαλίδας αιτήματος είναι συγκεκριμένη: ξεκινά με έναν αριθμό που υποδεικνύει το μήκος ολόκληρης της κεφαλίδας, ακολουθούμενο από άνω και κάτω τελεία, μετά μια σειρά ζευγών κλειδιού-τιμής που τερματίζονται με έναν χαρακτήρα null και τέλος τελειώνουν με κόμμα.Για παράδειγμα, ένα απλοποιημένοSCGIΗ κεφαλίδα του αιτήματος μπορεί να μοιάζει με αυτό:
70:CONTENT_LENGTH27SCGI1REQUEST_METHODGETquery_string,
Σε αυτό το παράδειγμα, το "70" αντιπροσωπεύει το συνολικό μήκος της κεφαλίδας, ακολουθούμενο από τρία ζεύγη κλειδιού-τιμής:CONTENT_LENGTH
、SCGI
καιREQUEST_METHOD
。
Μετά την αποστολή της κεφαλίδας του αιτήματος,Nginx Το σώμα του αιτήματος αποστέλλεται (εάν υπάρχει).ΓιαΠΑΙΡΝΩΤα αιτήματα συνήθως δεν έχουν σώμα αιτήματος, αλλά γιαΘΕΣΗήΒΑΖΩΑίτημα, το σώμα του αιτήματος μπορεί να περιέχει δεδομένα φόρμας ή άλλους τύπους περιεχομένου.
SCGI Αφού ο διακομιστής λάβει το αίτημα, επεξεργάζεται το αίτημα και δημιουργεί μια απάντηση.Η απάντηση αποστέλλεται πίσω μέσω της ίδιας σύνδεσηςNginx。SCGIΗ μορφή της απόκρισης είναι σχετικά απλή. Περιλαμβάνει κεφαλίδες απόκρισης και σώμα απόκρισης, χωρισμένα με κενή γραμμή.
NginxέλαβεSCGIΜετά την απόκριση του διακομιστή, μετατρέπεται ξανά σεHTTP Μορφή απάντησης.Αυτή η διαδικασία περιλαμβάνει ανάλυσηSCGIΕπικεφαλίδες απόκρισης, ρυθμισμένες κατάλληλαHTTPκεφαλίδες απόκρισης και, στη συνέχεια, μεταβιβάστε το σώμα απόκρισης ανέπαφο στον πελάτη.
σε όλη τη διαδικασία,Nginx Επίσης υπεύθυνος για τη διαχείριση του κύκλου ζωής της σύνδεσης.Αυτό περιλαμβάνει χειρισμό χρονικών ορίων σύνδεσης, διαχείριση συγκέντρωσης συνδέσεων (εάν είναι ενεργοποιημένηkeepalive
), χειρίζεται σφάλματα δικτύου κ.λπ. Εάν παρουσιαστεί σφάλμα κατά την επεξεργασία,NginxΜια κατάλληλη απάντηση σφάλματος θα επιστραφεί στον πελάτη σύμφωνα με τη διαμόρφωση.
επιπλέον,scgi_pass
Η διαδικασία εργασίας είναι μη μπλοκαρισμένη.αυτό σημαίνειNginxΜπορεί να επεξεργαστεί πολλαπλέςSCGI αιτήματα χωρίς τη δημιουργία νέας διαδικασίας ή νήματος για κάθε αίτημα.Αυτό το σχέδιο κάνειNginxΔυνατότητα αποτελεσματικού χειρισμού μεγάλου αριθμού ταυτόχρονων συνδέσεων.
υπάρχειNginxΜεσαία διαμόρφωσηscgi_pass
Το βασικό παράδειγμα είναι σχετικά απλό.Αυτή η διαμόρφωση θα επιτρέψειNginxΠροώθηση αιτημάτων για μια συγκεκριμένη διαδρομή προςSCGI υπηρέτης. Ακολουθεί ένα βασικό παράδειγμα διαμόρφωσης:
Πρώτα, ανοίξτεNginxΤο κύριο αρχείο διαμόρφωσης, που συνήθως βρίσκεται στο/etc/nginx/nginx.conf
ή/usr/local/nginx/conf/nginx.conf
.Σε αυτό το αρχείο πρέπει ναhttp
Προσθήκη ή τροποποίηση σε ένα μπλοκserver
κομμάτι.
υπάρχειserver
μπλοκ, θα προσθέσουμε αlocation
οδηγία για τον καθορισμό των αιτημάτων στα οποία θα πρέπει να διαβιβάζονταιSCGI υπηρέτης.Για παράδειγμα, αν θέλουμε να προσθέσουμε όλα/scgi/
Το αίτημα στην αρχή προωθείται στον διακομιστή που λειτουργεί στην τοπική θύρα 9000.SCGIΔιακομιστής, μπορείτε να χρησιμοποιήσετε την ακόλουθη διαμόρφωση:
http {
server {
listen 80;
server_name example.com;
location /scgi/ {
scgi_pass localhost:9000;
include scgi_params;
}
}
}
Σε αυτή τη διαμόρφωση,listen 80
οι οδηγίες λένεNginxΑκούστε στη θύρα 80 (στάνταρHTTPΛιμάνι).server_name
Η οδηγία ορίζει το όνομα τομέα στο οποίο θα πρέπει να ανταποκρίνεται αυτό το μπλοκ διακομιστή.
location /scgi/
το μπλοκ ορίζει όλα/scgi/
αρχήURL Όλα τα αιτήματα πρέπει να διεκπεραιωθούν.Μέσα σε αυτό το μπλοκ χρησιμοποιούμεscgi_pass
εντολή για καθορισμόSCGI Η διεύθυνση και η θύρα του διακομιστή. Σε αυτό το παράδειγμα,SCGIΟ διακομιστής λειτουργεί στον ίδιο υπολογιστή (localhost
) της θύρας 9000.
include scgi_params;
Η δήλωση περιέχει ένα προκαθορισμένο αρχείο διαμόρφωσης, το οποίο ορίζει μια σειρά απόSCGI παράμετρος.Αυτές οι παράμετροι καθορίζουνNginxπως ναHTTPΟι πληροφορίες αιτήματος μετατρέπονται σεSCGI παρακαλώ.Συνήθως, αυτό το αρχείο βρίσκεται/etc/nginx/scgi_params
ή/usr/local/nginx/conf/scgi_params
。
Αν σαςSCGIΟ διακομιστής απαιτεί πρόσθετες παραμέτρους, οι οποίες μπορούν να χρησιμοποιηθούνscgi_param
εντολή για ρύθμιση.Για παράδειγμα, εάν πρέπει να ρυθμίσετεSCRIPT_FILENAME
Οι παράμετροι μπορούν να ρυθμιστούν ως εξής:
location /scgi/ {
scgi_pass localhost:9000;
include scgi_params;
scgi_param SCRIPT_FILENAME /path/to/your/scripts$fastcgi_script_name;
}
εδώ,SCRIPT_FILENAME
Η παράμετρος ορίζεται στην πραγματική διαδρομή προς το σενάριο.$fastcgi_script_name
Είναι έναNginxΜεταβλητή που αντιπροσωπεύει το ζητούμενο όνομα σεναρίου.
Αν σαςSCGIΧρήση διακομιστήUnixυποδοχή τομέαTCPΗ θύρα μπορεί να ρυθμιστεί ως εξής:
location /scgi/ {
scgi_pass unix:/tmp/scgi.socket;
include scgi_params;
}
Σε αυτό το παράδειγμα,Nginxθα εντοπιστεί μέσω/tmp/scgi.socket
τουUnixυποδοχή τομέα μεSCGIΕπικοινωνία διακομιστή.
Μετά την ολοκλήρωση της διαμόρφωσης, πρέπει να φορτώσετε ξανά ή να επανεκκινήσετεNginx για να τεθούν σε ισχύ οι αλλαγές. Μπορούν να χρησιμοποιηθούν οι ακόλουθες εντολές:
sudo nginx -s reload
ή
sudo systemctl restart nginx
Αυτή η βασική διαμόρφωση είναι προς χρήσηscgi_pass
Παρέχει ένα καλό σημείο εκκίνησης. Ανάλογα με τις συγκεκριμένες ανάγκες σας, ενδέχεται να απαιτούνται περισσότερες προσαρμογές και βελτιστοποιήσεις. Για παράδειγμα, μπορεί να χρειαστεί να διαμορφώσετε την προσωρινή μνήμη, τα χρονικά όρια ή να ρυθμίσετε ομάδες διακομιστών ανάντη για εξισορρόπηση φορτίου. Αυτές οι επιλογές διαμόρφωσης αναλύονται λεπτομερώς στα επόμενα κεφάλαια.
υπάρχειNginx , η μονάδα upstream μας επιτρέπει να ορίσουμε ένα σύνολο διακομιστών που μπορούν να χρησιμοποιηθούν για εξισορρόπηση φορτίου και ανακατεύθυνση.όταν μεscgi_pass
Η μονάδα upstream μπορεί να βελτιωθεί σημαντικά όταν χρησιμοποιείται σε συνδυασμό με οδηγίεςSCGIΕυελιξία και αξιοπιστία αντιπροσώπου.
Η βασική σύνταξη της ανοδικής ενότητας είναι η εξής:
upstream backend_name {
server address1;
server address2;
# 更多服务器...
}
Σε αυτή τη διαμόρφωση,backend_name
είναι το όνομα που καθορίσατε για αυτήν την ομάδα διακομιστών, το οποίο μπορεί να χρησιμοποιηθεί αργότεραscgi_pass
αναφέρεται στην οδηγία.καθεserver
Η οδηγία ορίζει τη διεύθυνση ενός διακομιστή υποστήριξης, ο οποίος μπορεί να είναιIPΔιεύθυνση συν αριθμό θύρας, που μπορεί επίσης να είναιUnixΔιαδρομή υποδοχής τομέα.
Για παράδειγμα, μπορούμε να ορίσουμε ένα αρχείο που ονομάζεταιscgi_servers
ανοδική ομάδα:
upstream scgi_servers {
server 127.0.0.1:9000;
server 127.0.0.1:9001;
server unix:/tmp/scgi.socket;
}
Αφού ορίσουμε ανάντη, μπορούμεscgi_pass
Χρησιμοποιήστε το στην οδηγία:
location /app/ {
scgi_pass scgi_servers;
include scgi_params;
}
Έτσι,NginxΤο αίτημα θα διανεμηθεί στοscgi_servers
διακομιστές στην ομάδα.
Η μονάδα upstream παρέχει μια ποικιλία αλγορίθμων εξισορρόπησης φορτίου, οι οποίοι μπορούν να διαμορφωθούν προσθέτοντας παραμέτρους μετά την οδηγία διακομιστή:
Round-robin (προεπιλογή): Διανείμετε αιτήματα σε κάθε διακομιστή διαδοχικά.
Σταθμισμένη ψηφοφορία: Μπορείτε να καθορίσετε ένα βάρος για κάθε διακομιστή Οι διακομιστές με υψηλότερα βάρη λαμβάνουν περισσότερα αιτήματα. Για παράδειγμα:
upstream scgi_servers {
server 127.0.0.1:9000 weight=3;
server 127.0.0.1:9001 weight=1;
}
least_conn
εντολή:upstream scgi_servers {
least_conn;
server 127.0.0.1:9000;
server 127.0.0.1:9001;
}
ip_hash
εντολή:upstream scgi_servers {
ip_hash;
server 127.0.0.1:9000;
server 127.0.0.1:9001;
}
Η μονάδα upstream παρέχει επίσης λειτουργίες ελέγχου της υγείας του διακομιστή και ανακατεύθυνσης.Για παράδειγμα, μπορούμε να χρησιμοποιήσουμεmax_fails
καιfail_timeout
Παράμετροι για τη διαμόρφωση της ανίχνευσης σφαλμάτων:
upstream scgi_servers {
server 127.0.0.1:9000 max_fails=3 fail_timeout=30s;
server 127.0.0.1:9001 max_fails=3 fail_timeout=30s;
}
Σε αυτήν τη διαμόρφωση, εάν ένας διακομιστής αποτύχει τρεις φορές στη σειρά μέσα σε 30 δευτερόλεπτα,NginxΘα επισημανθεί ως μη διαθέσιμο και δεν θα σταλούν άλλα αιτήματα για τα επόμενα 30 δευτερόλεπτα.
Επιπλέον, μπορούμε να χρησιμοποιήσουμεbackup
Παράμετροι για τον καθορισμό ενός εφεδρικού διακομιστή, ο οποίος θα χρησιμοποιείται μόνο όταν όλοι οι κύριοι διακομιστές δεν είναι διαθέσιμοι:
upstream scgi_servers {
server 127.0.0.1:9000;
server 127.0.0.1:9001;
server 127.0.0.1:9002 backup;
}
Χρησιμοποιώντας σωστά τη μονάδα upstream, μπορούμε να δημιουργήσουμε μια άκρως διαθέσιμη και υψηλής απόδοσηςSCGI Σύμπλεγμα πρακτόρων. Αυτό όχι μόνο βελτιώνει τη συνολική απόδοση της εφαρμογής, αλλά ενισχύει επίσης την αξιοπιστία και την ανοχή σε σφάλματα του συστήματος. Σε πρακτικές εφαρμογές, θα πρέπει να επιλέγουμε κατάλληλες στρατηγικές εξισορρόπησης φορτίου και μηχανισμούς ανακατεύθυνσης με βάση συγκεκριμένες ανάγκες και σενάρια για να επιτύχουμε την καλύτερη απόδοση του συστήματος.
Στη διαμόρφωσηNginxτουscgi_pass
οδηγία, έχουμε δύο κύριες επιλογές να προσδιορίσουμεSCGIΔιεύθυνση διακομιστή:Unixυποδοχή τομέα καιTCP πρίζα. Και οι δύο μέθοδοι έχουν τα δικά τους πλεονεκτήματα και μειονεκτήματα και ποια μέθοδος θα επιλέξετε εξαρτάται από τα συγκεκριμένα σενάρια και τις ανάγκες της εφαρμογής.
UnixΟι υποδοχές τομέα είναι ένας τύπος επικοινωνίας μεταξύ διεργασιών (IPC ) μηχανισμός που επιτρέπει στις διαδικασίες στο ίδιο μηχάνημα να επικοινωνούν αποτελεσματικά.υπάρχειNginxΔιαμόρφωση,Unix Η διεύθυνση μιας υποδοχής τομέα συνήθως αναπαρίσταται ως διαδρομή αρχείου. Για παράδειγμα:
scgi_pass unix:/tmp/scgi.socket;
χρήσηUnix Το κύριο πλεονέκτημα των υποδοχών τομέα είναι η απόδοσή τους.Επειδή η επικοινωνία πραγματοποιείται στο ίδιο μηχάνημα και δεν χρειάζεται να περάσει από τη στοίβα πρωτοκόλλου δικτύου, επομένωςUnixΟι υποδοχές τομέα είναι συνήθως μικρότερες απόTCP Οι πρίζες είναι πιο γρήγορες.αποφεύγουνTCP/IP Τα γενικά έξοδα που προκαλούνται από το πρωτόκολλο, όπως η ενθυλάκωση και η αποκαψούλωση πακέτων δεδομένων, ο έλεγχος συμφόρησης δικτύου κ.λπ.Αυτό κάνειUnixΟι υποδοχές τομέα είναι ιδιαίτερα κατάλληλες γιαNginxκαιSCGIΟ διακομιστής λειτουργεί στο ίδιο μηχάνημα.
Άλλος χρησιμοποιείUnix Το πλεονέκτημα των υποδοχών τομέα είναι η ασφάλεια. Εφόσον η επικοινωνία περιορίζεται στον τοπικό μηχάνημα, είναι φυσικά ανοσία σε επιθέσεις από όλο το δίκτυο. Επιπλέον, τα δικαιώματα του συστήματος αρχείων μπορούν να χρησιμοποιηθούν για τον έλεγχο της πρόσβασης σε αρχεία υποδοχής, παρέχοντας ένα πρόσθετο επίπεδο ασφάλειας.
Ωστόσο,Unix Οι υποδοχές τομέα έχουν επίσης τους περιορισμούς τους. Προφανώς, μπορούν να χρησιμοποιηθούν μόνο για επικοινωνία μεταξύ διεργασιών στο ίδιο μηχάνημα.ανNginxκαιSCGIΟ διακομιστής πρέπει να εκτελείται σε διαφορετικό μηχάνημα, επομένως δεν μπορεί να χρησιμοποιηθείUnixυποδοχή τομέα.
Σε αντίθεση,TCPΧρήση πρίζαςIP διεύθυνση και αριθμός θύρας για να καθορίσετε τη διεύθυνση διακομιστή. Για παράδειγμα:
scgi_pass 127.0.0.1:9000;
TCP Το κύριο πλεονέκτημα των υποδοχών είναι η ευελιξία.επιτρέπουνNginxκαιSCGI Οι διακομιστές λειτουργούν σε διαφορετικά μηχανήματα, κάτι που είναι απαραίτητο για κατανεμημένα συστήματα ή εφαρμογές που απαιτούν οριζόντια επεκτασιμότητα.χρήσηTCPπρίζες, μπορούμε εύκολα να εφαρμόσουμε εξισορρόπηση φορτίου, διανέμοντας αιτήματα σε πολλαπλούςSCGIυπηρέτης.
Ένα άλλο πλεονέκτημα είναι ότιTCP Οι υποδοχές διευκολύνουν την παρακολούθηση και τον εντοπισμό σφαλμάτων σε επίπεδο δικτύου. Χρησιμοποιώντας τυπικά εργαλεία δικτύου, μπορούμε εύκολα να ελέγξουμε την κατάσταση της επικοινωνίας και να διαγνώσουμε προβλήματα.
Ωστόσο,TCPΤο κύριο μειονέκτημα των υποδοχών είναι ότι η απόδοση είναι ελαφρώς χαμηλότερη απόUnix υποδοχή τομέα. Ακόμη και αν επικοινωνούν στο ίδιο μηχάνημα, τα δεδομένα πρέπει να περάσουν από την πλήρη στοίβα πρωτοκόλλου δικτύου, κάτι που θα φέρει κάποια επιπλέον επιβάρυνση.Επιπλέον, χρησιμοποιήστεTCPΟι πρίζες ενδέχεται να απαιτούν πρόσθετα ζητήματα ασφαλείας, όπως η ρύθμιση κανόνων τείχους προστασίας, χρησιμοποιώνταςSSL/TLSΚρυπτογράφηση κλπ.
Όταν επιλέγετε να χρησιμοποιήσετεUnixΥποδοχές τομέα ακόμαTCPΌταν χρησιμοποιείτε πρίζες, πρέπει να λαμβάνονται υπόψη οι ακόλουθοι παράγοντες:
Απαιτήσεις απόδοσης: Εάν επιδιώκετε την υψηλότερη απόδοση καιNginxκαιSCGIΟ διακομιστής βρίσκεται στο ίδιο μηχάνημα και θα πρέπει να επιλεγείUnixυποδοχή τομέα.
Αρχιτεκτονική ανάπτυξης: ανNginxκαιSCGIΕάν ο διακομιστής πρέπει να εκτελείται σε διαφορετικά μηχανήματα ή χρειάζεται να επιτύχει εξισορρόπηση φορτίου, πρέπει να το χρησιμοποιήσετεTCPπρίζα.
Απαιτήσεις ασφαλείας: Εάν η ασφάλεια είναι το κύριο μέλημα και δεν απαιτείται επικοινωνία μεταξύ μηχανών,UnixΟι υποδοχές τομέα μπορεί να είναι καλύτερη επιλογή.
Επεκτασιμότητα: Εάν αναμένεται ότι μπορεί να χρειαστείSCGIΓια να κλιμακώσετε έναν διακομιστή σε πολλαπλές μηχανές, χρησιμοποιήστεTCPΟι υποδοχές θα είναι πιο εύκολο να συντονιστούν σε σχήματα.
Ανάγκες εντοπισμού σφαλμάτων και παρακολούθησης: Εάν χρειάζεται να χρησιμοποιήσετε τυπικά εργαλεία δικτύου για παρακολούθηση και εντοπισμό σφαλμάτων,TCPΟι πρίζες μπορεί να είναι πιο κατάλληλες.
Εν συντομία,Unixυποδοχή τομέα καιTCP Οι πρίζες είναι όλες έγκυρες επιλογές. Η επιλογή σας θα πρέπει να βασίζεται στις συγκεκριμένες ανάγκες της εφαρμογής σας, στις απαιτήσεις απόδοσης και στο περιβάλλον ανάπτυξης.Σε πολλές περιπτώσεις, ειδικά όταν επιδιώκονται υψηλές επιδόσεις καιNginxκαιSCGIΌταν οι διακομιστές συνυπάρχουν στο ίδιο μηχάνημα,Unix Οι υποδοχές τομέα μπορεί να είναι μια καλύτερη επιλογή. Αλλά εάν απαιτείται μεγαλύτερη ευελιξία ή κατανεμημένη ανάπτυξη,TCPΟι πρίζες είναι μια απαραίτητη επιλογή.
Αυτό το κεφάλαιο θα συζητηθεί λεπτομερώςscgi_pass
Τρεις βασικές προηγμένες πτυχές διαμόρφωσης: ρυθμίσεις χρονικού ορίου λήξης, διαμόρφωση buffer και διαχείριση χώρου συγκέντρωσης σύνδεσης.
Η ρύθμιση χρονικού ορίου είναι να διασφαλιστείNginxκαιSCGI Κλειδί για την αξιοπιστία της επικοινωνίας μεταξύ των διακομιστών. Η σωστή διαμόρφωση χρονικού ορίου λήξης μπορεί να αποτρέψει την επ' αόριστον διακοπή των αιτημάτων εάν παρουσιαστεί πρόβλημα, ενώ παρέχει επίσης επαρκή χρόνο επεξεργασίας για αργές συνδέσεις.
NginxΠαρέχει πολλαπλέςscgi_pass
Σχετικές οδηγίες χρονικού ορίου:
Πρωτα απο ολαscgi_connect_timeout
, που ορίζειNginxκαιSCGI Ο μέγιστος χρόνος αναμονής για τη δημιουργία σύνδεσης από τον διακομιστή. Εάν η σύνδεση δεν μπορεί να πραγματοποιηθεί εντός του καθορισμένου χρόνου,Nginx θα επιστρέψει ένα σφάλμα. Για παράδειγμα:
scgi_connect_timeout 60s;
Αυτή η διαμόρφωση ορίζει το χρονικό όριο σύνδεσης στα 60 δευτερόλεπτα.
Κατα δευτερον,scgi_read_timeout
ορίζεταιNginxαπόSCGI Λήξη χρονικού ορίου του διακομιστή για την ανάγνωση των απαντήσεων.ανSCGI Ο διακομιστής δεν έχει μεταδώσει δεδομένα κατά τη διάρκεια αυτής της περιόδου και η σύνδεση θα κλείσει. Για παράδειγμα:
scgi_read_timeout 60s;
Επιτέλους,scgi_send_timeout
έχει ήδη ρυθμιστείNginxΠροςSCGI Το χρονικό όριο λήξης για την αποστολή αιτημάτων από τον διακομιστή.Εάν εντός του καθορισμένου χρόνουSCGI Ο διακομιστής δεν έλαβε δεδομένα και η σύνδεση θα κλείσει. Για παράδειγμα:
scgi_send_timeout 60s;
Αυτές οι ρυθμίσεις χρονικού ορίου θα πρέπει να προσαρμόζονται με βάση τις ανάγκες της πραγματικής εφαρμογής. Για τις περισσότερες εφαρμογές, οι προεπιλεγμένες τιμές είναι επαρκείς. Αλλά για ορισμένα μακροχρόνια αιτήματα, μπορεί να είναι απαραίτητο να αυξηθούν αυτές οι τιμές χρονικού ορίου.
Διαμόρφωση buffer για βελτιστοποίησηNginxκαιSCGI Η μεταφορά δεδομένων μεταξύ διακομιστών είναι κρίσιμη. Οι λογικές ρυθμίσεις buffer μπορούν να βελτιώσουν την ταχύτητα απόκρισης και να μειώσουν την κατανάλωση πόρων.
scgi_buffer_size
Οδηγίες ρύθμισης για ανάγνωσηSCGI Το μέγεθος buffer για το πρώτο μέρος της απόκρισης του διακομιστή. Αυτό συνήθως περιέχει μια μικρή κεφαλίδα απόκρισης. Για παράδειγμα:
scgi_buffer_size 4k;
scgi_buffers
Ορίζονται οδηγίες για την ανάγνωσηSCGI Ο αριθμός και το μέγεθος των buffer για τις αποκρίσεις διακομιστή. Για παράδειγμα:
scgi_buffers 8 4k;
Αυτή η διαμόρφωση δημιουργεί 8 buffer μεγέθους 4k.
Εάν η απόκριση δεν χωράει εξ ολοκλήρου στη μνήμη, μπορείτε να χρησιμοποιήσετεscgi_max_temp_file_size
Οδηγία για τον περιορισμό του μέγιστου μεγέθους των προσωρινών αρχείων:
scgi_max_temp_file_size 1024m;
Αυτό περιορίζει το μέγιστο μέγεθος των προσωρινών αρχείων στα 1024 MB.
Για μεγάλες αποκρίσεις μπορείτε να χρησιμοποιήσετεscgi_busy_buffers_size
Οδηγία για τον περιορισμό του μεγέθους buffer που είναι διαθέσιμο σε κατάσταση κατειλημμένης:
scgi_busy_buffers_size 8k;
Αυτές οι ρυθμίσεις buffer θα πρέπει να ρυθμιστούν με βάση τα χαρακτηριστικά της εφαρμογής σας και τους πόρους του διακομιστή για βέλτιστη απόδοση.
Η διαχείριση της πισίνας σύνδεσης είναι βελτιστοποιημένηNginxκαιSCGI Μια άλλη σημαντική πτυχή της επικοινωνίας μεταξύ διακομιστών. Με την επαναχρησιμοποίηση των συνδέσεων, τα γενικά έξοδα δημιουργίας νέων συνδέσεων μπορούν να μειωθούν σημαντικά και να βελτιωθεί η συνολική απόδοση.
scgi_keepalive
Οδηγία για τη διαμόρφωση ανάντηSCGI Ο μέγιστος αριθμός αδρανών συνδέσεων που μπορεί να διατηρήσει ο διακομιστής. Για παράδειγμα:
scgi_keepalive 10;
Αυτή η ρύθμιση παραμέτρων επιτρέπει σε κάθε διεργασία εργαζόμενου να διατηρεί έως και 10 συνδέσεις αδρανούς διατήρησης.
μπορεί να χρησιμοποιηθείscgi_http_version
εντολή για καθορισμόNginxχρησιμοποιείται μεSCGIεπικοινωνία διακομιστήHTTPΈκδοση πρωτοκόλλου:
scgi_http_version 1.1;
χρήσηHTTP/1.1Μπορούν να ενεργοποιηθούν οι μακροχρόνιες συνδέσεις, κάτι που είναι κρίσιμο για τη διατήρηση της αποτελεσματικότητας της πισίνας σύνδεσης.
Επιπλέον, μπορεί κανείς να χρησιμοποιήσειscgi_next_upstream
Οδηγίες για τον έλεγχο υπό ποιες συνθήκες τα αιτήματα πρέπει να διαβιβάζονται στον επόμενο διακομιστή:
scgi_next_upstream error timeout invalid_header http_500;
Αυτή η διαμόρφωση καθορίζει τι πρέπει να κάνετε όταν παρουσιαστεί σφάλμα, παρουσιαστεί ένα χρονικό όριο λήξης, λαμβάνεται μη έγκυρη κεφαλίδα ήHTTP Σε ένα σφάλμα 500, το αίτημα θα πρέπει να περάσει στον επόμενο διακομιστή.
Να γραφτεί
Αυτό το άρθρο εξετάζει λεπτομερώςNginxΜέσηςscgi_pass
εφαρμογή οδηγιών, με ιδιαίτερη έμφασηΠύθων Διαμόρφωση και ανάπτυξη εφαρμογής.Πρώτα παρουσιάσαμεSCGIΣτη συνέχεια εξηγήθηκαν σε βάθος τα χαρακτηριστικά και τα πλεονεκτήματα του πρωτοκόλλου.scgi_pass
Βασική σύνταξη και προηγμένες επιλογές διαμόρφωσης για οδηγίες.Μέσα από πρακτικές περιπτώσεις, δείξτε πώς ναPython FlupΔιαμόρφωση πλαισίουscgi_pass
, συμπεριλαμβανομένων των βασικών ρυθμίσεων, της εξισορρόπησης φορτίου, της συγκέντρωσης συνδέσεων και της διαχείρισης buffer.