Επιστροφή στο blog

Ο Κόσμος των Web Servers: Apache εναντίον Nginx

Ο Κόσμος των Web Servers: Apache εναντίον Nginx

Εισαγωγή στα Apache και Nginx

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

web server

Διακομιστής ιστού που διευκολύνει την επικοινωνία μεταξύ πελάτη και διακομιστών εφαρμογών

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

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

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

Βασική επισκόπηση

Θα ξεκινήσουμε με μια γενική επισκόπηση των δύο διακομιστών ιστού. Τόσο το Apache όσο και το Nginx έχουν χτίσει εξαιρετική φήμη στην κοινότητα. Φημίζονται για τις επιδόσεις τους και χρησιμοποιούνται από πολλούς γνωστούς οργανισμούς σε όλο τον κόσμο.

Apache

Το Apache κυκλοφόρησε το 1995. Ο Robert McCool ανέπτυξε αυτόν τον διακομιστή HTTP υπό το the Apache Software Foundation, εξού και το όνομα. Από την κυκλοφορία του, εκατοντάδες χιλιάδες άνθρωποι σε όλο τον κόσμο χρησιμοποιούν το Apache.

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

Nginx

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

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

Δυνατότητες διαχείρισης κίνησης

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

Apache

Το Apache χρησιμοποιεί κάτι που ονομάζεται MPM- Multi-Processing Modules. Οι διαχειριστές χρησιμοποιούν μια ποικιλία από MPMs για να χειριστούν και να τροποποιήσουν την αρχιτεκτονική διαχείρισης συνδέσεων. Μέρος της ελκυστικότητας του διακομιστή ιστού Apache είναι η ευελιξία που προσφέρει η αρχιτεκτονική του. Μια τέτοια υποδομή βασισμένη σε μονάδες που χωρίζει την επεξεργασία σε μεμονωμένα νήματα και ομάδες νημάτων καθιστά ευκολότερη την κλιμάκωση και την προσαρμογή σε διαφορετικά είδη συνδέσεων.

Ας ρίξουμε μια ματιά σε μερικές από τις επιμέρους μονάδες που χρησιμοποιούνται στο Apache:

  • mpm_prefork

Το πρώτο είναι το mpm_prefork. Αυτό είναι ένα module επεξεργασίας που είναι υπεύθυνο για τη διαχείριση των εισερχόμενων αιτημάτων από τους επισκέπτες. Δημιουργεί ένα νήμα (thread) ή μια θυγατρική διεργασία (child) για να χειριστεί μία σύνδεση ανά πάσα στιγμή. Αυτό σημαίνει ότι εάν ο αριθμός των αιτημάτων είναι μικρότερος από τον αριθμό των διεργασιών, το mpm_prefork είναι αρκετά αποτελεσματικό στη λειτουργία του.

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

  • mpm_worker

Όπως ήδη γνωρίζουμε, ένα νήμα είναι υπεύθυνο για μία σύνδεση. Αυτό το module προχωρά ένα βήμα παραπέρα και σας επιτρέπει να διαχειρίζεστε πολλαπλά νήματα ταυτόχρονα. Αυτό είναι ένα πολύ πιο επεκτάσιμο module σε σύγκριση με το mpm_prefork, το οποίο δυσκολεύεται πέρα από ένα συγκεκριμένο όριο. Οι νέες συνδέσεις μπορούν να συνδεθούν αμέσως σε ένα νήμα αντί να πρέπει να περιμένουν.

  • mpm_event

Το mpm_event είναι υπεύθυνο για τη διατήρηση των συνδέσεων keep-alive. Ο κύριος σκοπός αυτού του module είναι να αποτρέψει την υπερφόρτωση του συστήματος λόγω των αιτημάτων keep-alive. Αυτό το επιτυγχάνει δεσμεύοντας ένα νήμα σε μια σύνδεση ακόμη και χωρίς την παρουσία ενεργού αιτήματος. Το νήμα θα παραμείνει αποκλειστικό για όσο διάστημα η σύνδεση είναι ενεργή. Τυχόν εισερχόμενα αιτήματα μεταφέρονται σε μη κατειλημμένα νήματα.

Nginx

Σε αντίθεση με τον Apache, ο Nginx κατασκευάστηκε με έναν πολύ συγκεκριμένο σκοπό στο μυαλό. Γνωρίζαμε ήδη τα προβλήματα που προέκυπταν με τη σύνδεση και την επεκτασιμότητα σε αυτό το επίπεδο. Γι' αυτό χρησιμοποιεί έναν αλγόριθμο που είναι ασύγχρονος και μη αποκλειστικός (non-blocking). Δεν αφιερώνει μεμονωμένα νήματα για κάθε σύνδεση. Αντίθετα, ο Nginx παράγει πολυάριθμες διεργασίες εργασίας (worker processes) που είναι ικανές να χειριστούν χιλιάδες συνδέσεις ταυτόχρονα.

Η αρχή λειτουργίας πίσω από την αρχιτεκτονική του Nginx είναι ο μηχανισμός γρήγορου βρόχου (fast looping mechanism). Αυτός ο αλγόριθμος επεξεργάζεται συνεχώς συμβάντα και τα παρακολουθεί. Αυτό σημαίνει ότι οι διεργασίες καθοδηγούνται από συμβάντα (event-driven) και κάθε διεργασία εργασίας είναι δεσμευμένη μόνο στις δικές της συνδέσεις. Όλες οι συνδέσεις μιας διεργασίας εργασίας βρίσκονται σε έναν βρόχο συμβάντων (event loop). Εδώ, συνυπάρχουν και υποβάλλονται σε επεξεργασία ασύγχρονα με τις άλλες συνδέσεις υπό τη συγκεκριμένη διεργασία εργασίας.

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

Διαχείριση Στατικού και Δυναμικού Περιεχομένου

Μια άλλη παράμετρος που μπορούμε να χρησιμοποιήσουμε για να συγκρίνουμε τους δύο web servers είναι ο τρόπος με τον οποίο διαχειρίζονται το στατικό και το δυναμικό περιεχόμενο.

Apache

Ο Apache χρησιμοποιεί μια μέθοδο βασισμένη σε αρχεία (file-based) για τη διαχείριση του στατικού περιεχομένου. Το σύστημα επεξεργασίας MPM του επιτρέπει να λειτουργεί με αυτή τη συμβατική μέθοδο.

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

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

Nginx

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

Εφόσον οι πληροφορίες πρέπει να μεταβιβάζονται μεταξύ των δύο στοιχείων, θα πρέπει να συντονίσετε την επικοινωνία μεταξύ τους. Θα πρέπει να καθορίσετε πόσες συνδέσεις θέλετε να επιτρέψετε και να διαμορφώσετε το πρωτόκολλο. Θα πρέπει να χρησιμοποιήσετε το πρωτόκολλο που μπορεί να αναγνωσθεί και να γίνει κατανοητό από το Nginx, όπως HTTP, FastCGI, SCGI, uWSGI ή memcache μεταξύ άλλων.

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

Κατάλογοι Περιεχομένου: Κατανεμημένη έναντι Συγκεντρωτικής Διαμόρφωσης

Κάθε διακομιστής ιστού έχει τον δικό του κατάλογο περιεχομένου. Μία από τις πιο κρίσιμες παραμέτρους για την αξιολόγηση του Apache και του Nginx είναι το αν επιτρέπουν ή όχι τη διαμόρφωση σε επίπεδο καταλόγου.

Apache

Υπάρχουν ορισμένα κρυφά αρχεία στους καταλόγους περιεχομένου που περιέχουν οδηγίες. Αυτά είναι τα αρχεία .htaccess. Με τον Apache, μπορείτε να ερμηνεύσετε αυτές τις οδηγίες ανά κατάλογο. Έτσι, όταν στέλνετε ένα αίτημα, ο Apache θα ελέγξει τη διαδρομή προς το αρχείο για να βρει ένα αρχείο .htaccess. Όταν το βρει, θα ερμηνεύσει και θα εφαρμόσει αμέσως τις οδηγίες που περιέχονται σε αυτό. Ο Apache δεν θα κάνει επανεκκίνηση του διακομιστή για να εφαρμόσει αυτές τις οδηγίες.

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

Ένα από τα οφέλη του αρχείου .htaccess είναι ότι ο χρήστης, ο οποίος δεν διαθέτει έλεγχο ταυτότητας, μπορεί να ελέγξει και να τροποποιήσει τουλάχιστον κάποια πτυχή του περιεχομένου που βλέπει στο πρόγραμμα περιήγησής του. Γι' αυτό ο Apache χρησιμοποιείται συχνά από παρόχους κοινόχρηστης φιλοξενίας. Οι πάροχοι υπηρεσιών έχουν εξουσιοδοτημένη πρόσβαση στην κεντρική διαμόρφωση. Οι πελάτες είναι σε θέση να ασκούν έλεγχο σε ορισμένους καταλόγους χωρίς να έχουν πρόσβαση στην κύρια διαμόρφωση.

Αν θέλετε, είναι δυνατό να απενεργοποιήσετε την ερμηνεία του .htaccess στον Apache.

Nginx

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

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

Ερμηνεία Αιτημάτων

Ένας άλλος τρόπος διάκρισης μεταξύ των δύο διακομιστών είναι ο τρόπος με τον οποίο ερμηνεύουν τα αιτήματα.

Apache

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

Όταν ερμηνεύεται ως φυσικός πόρος, χρησιμοποιεί τα μπλοκ <Directory> ή <Files>. Αυτή είναι η προεπιλεγμένη μέθοδος ερμηνείας για τον διακομιστή. Λαμβάνει τη ρίζα του εγγράφου. Στη συνέχεια, ακολουθεί τον κεντρικό υπολογιστή και τον αριθμό θύρας στο αίτημα για να βρει το σχετικό αρχείο στο δέντρο εγγράφων.

Η τοποθεσία URI, από την άλλη πλευρά, χρειάζεται μια αφηρημένη αξιολόγηση. Έτσι, ο Apache χρησιμοποιεί τα μπλοκ <Location> για αφηρημένους πόρους αντί να εργάζεται με το σύστημα αρχείων.

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

Nginx

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

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

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

Συστήματα Modules

Παρόλο που τόσο ο Apache όσο και ο Nginx προσφέρουν υποστήριξη συστημάτων modules για επέκταση, υπάρχουν ορισμένες σημαντικές διαφορές στον εσωτερικό τρόπο λειτουργίας τους.

Apache

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

Στην πραγματικότητα, μπορείτε ακόμη και να τροποποιήσετε τη λειτουργία του πυρήνα του διακομιστή χρησιμοποιώντας modules όπως το  mod_php. Όπως έχουμε αναφέρει προηγουμένως, αυτό το module σάς επιτρέπει να ενσωματώσετε έναν διερμηνέα PHP στις επιμέρους διεργασίες εργασίας. Αυτό είναι χρήσιμο όταν πρέπει να επεξεργαστείτε δυναμικό περιεχόμενο.

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

Nginx

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

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

Οικοσύστημα και Υποστήριξη

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

Apache

Ο Apache είναι μια παλαιότερη και πιο δημοφιλής πλατφόρμα. Έτσι, είναι κατανοητό ότι διαθέτει μεγαλύτερη γκάμα υποστηρικτικών εργαλείων και λογισμικού σε σύγκριση με τον Nginx. Υπάρχει ένας τεράστιος όγκος τεκμηρίωσης τρίτων στη διάθεσή σας για την υποστήριξη του βασικού διακομιστή. Όχι μόνο αυτό, αλλά μπορείτε επίσης να τον συνδυάσετε με άλλο λογισμικό για να ολοκληρώσετε συγκεκριμένες εργασίες. Μπορείτε είτε να προσθέσετε αυτά τα εργαλεία στο έργο σας είτε στο πακέτο σας. Είναι σε θέση να εκκινήσουν εύκολα μέσα στο οικοσύστημα του Apache.

Nginx

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

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

Μια συνεργατική λύση;

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

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

Ένα άλλο χαρακτηριστικό του Nginx που εκμεταλλεύονται οι χρήστες είναι η ικανότητά του να διαχειρίζεται αποτελεσματικά το στατικό περιεχόμενο. Για να αναπληρώσουμε το γεγονός ότι ο Nginx χρειάζεται ένα εξωτερικό στοιχείο για την επεξεργασία δυναμικού περιεχομένου, μπορούμε να ανακατευθύνουμε την PHP και άλλα σχετικά αιτήματα στον Apache μέσω ενός διακομιστή μεσολάβησης (proxy). Ο Apache θα αποδώσει το αίτημα σε μια ιστοσελίδα και θα το στείλει πίσω στον Nginx, ώστε αυτός να το σερβίρει στον πελάτη.

Ακολουθούν ορισμένοι πόροι που μπορείτε να βρείτε στο ιστολόγιό μας που μπορούν να σας βοηθήσουν να ξεκινήσετε και με τους δύο διακομιστές ιστού:

Apache
Nginx

Συμπέρασμα

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

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

Καλή συνέχεια!

author

Akshay Nagpal

Συγγραφέας · CloudSigma

Ο Preslav Dobrev είναι Δημιουργικός Σχεδιαστής στην CloudSigma, με εστίαση στη συνεπή επιχειρηματική ταυτότητα μέσω παραδοσιακών και καινοτόμων καναλιών μάρκετινγκ. Διαθέτει την ικανότητα να συνδυάζει το καλλιτεχνικό όραμα με το στρατηγικό μάρκετινγκ για τη δημιουργία εντυπωσιακών αφηγήσεων επωνυμίας.

Σχόλια

Δεν υπάρχουν σχόλια ακόμα. Γράψτε το πρώτο.