17Aug

Οι διακομιστές Web διατηρούν μόνο έναν ιστότοπο;

Όταν ξεκινάτε για πρώτη φορά να μάθετε πώς όλα τα ονόματα τομέα, οι διευθύνσεις IP, οι διακομιστές ιστού και οι ιστότοποι λειτουργούν από κοινού, μπορεί να είναι κάπως συγκεχυμένη ή συντριπτική κατά περιόδους.Πώς είναι όλα ρυθμισμένα για να λειτουργούν τόσο ομαλά;Η σημερινή δημοσίευση του χρήστη SuperUser Q & A έχει τις απαντήσεις σε ερωτήσεις περίεργου αναγνώστη.

Η σημερινή ερώτηση &Η συνάντηση απαντήσεων έρχεται με την ευγένεια του SuperUser - μια υποδιαίρεση του Stack Exchange, μια κοινότητα-καθοδηγούμενη ομαδοποίηση Q & A ιστοσελίδες.

Φωτογραφία ευγενική προσφορά του Rosmarie Voegtli( Flickr).

Η ερώτηση

αναγνώστη SuperUser user3407319 θέλει να γνωρίζει αν οι διακομιστές web διαθέτουν μόνο έναν ιστότοπο το καθένα:

Με βάση αυτό που καταλαβαίνω σχετικά με το DNS και τη σύνδεση ενός ονόματος τομέα με τη διεύθυνση IP του διακομιστή ιστού, αποθηκεύεται ένας ιστότοπος,ο διακομιστής ιστού μπορεί να περιέχει μόνο έναν ιστότοπο;Εάν οι διακομιστές ιστού κατέχουν περισσότερους από έναν ιστότοπους, τότε πώς θα επιλυθούν όλα αυτά ώστε να μπορώ να αποκτήσω πρόσβαση στην ιστοσελίδα που θέλω χωρίς προβλήματα ή ανακατεύθυνση;

Οι διακομιστές ιστού διαθέτουν μόνο έναν ιστότοπο ο καθένας, ή κρατούν περισσότερα;

Η απάντηση

Συνεργάτης SuperUser Bob έχει την απάντηση για εμάς:

Βασικά, το πρόγραμμα περιήγησης περιλαμβάνει το όνομα τομέα στο αίτημα HTTP έτσι ώστε ο διακομιστής ιστού να γνωρίζει τον τομέα που ζητήθηκε και να μπορεί να ανταποκριθεί ανάλογα.

Αιτήσεις HTTP

Ακολουθεί το πώς συμβαίνει το τυπικό αίτημα HTTP:

1. Ο χρήστης παρέχει μια διεύθυνση URL στη μορφή http: // host: port / path.

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

3. Το πρόγραμμα περιήγησης ανοίγει μια σύνδεση TCP στην καθορισμένη θύρα ή προεπιλογή στη θύρα 80 σε αυτή τη διεύθυνση IP.

4. Το πρόγραμμα περιήγησης στέλνει ένα αίτημα HTTP.Για το HTTP / 1.1, μοιάζει με αυτό:

Η κεφαλίδα του κεντρικού υπολογιστή είναι τυπική και απαιτείται σε HTTP / 1.1.Δεν προσδιορίστηκε στο spec HTTP / 1.0, αλλά ορισμένοι διακομιστές το υποστηρίζουν ούτως ή άλλως.

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

  • Η απαιτούμενη διεύθυνση IP, από την υποδοχή TCP( η διεύθυνση IP του πελάτη είναι επίσης διαθέσιμη, αλλά σπάνια χρησιμοποιείται και μερικές φορές για το κλείδωμα /που καθορίζεται στην κεφαλίδα του κεντρικού υπολογιστή από το πρόγραμμα περιήγησης στο αίτημα HTTP
  • Η ζητούμενη διαδρομή
  • Οποιαδήποτε άλλη κεφαλίδα( cookie κ.λπ.)

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

Αυτό είναι γνωστό ως εικονικός κεντρικός υπολογιστής που βασίζεται σε όνομα στο Apache-land, ενώ ο Nginx ονομάζει τα ονόματα διακομιστών σε μπλοκ διακομιστών και η υπηρεσία IIS προτιμά τον εικονικό διακομιστή.

Τι γίνεται με το HTTPS;Το

HTTPS είναι λίγο διαφορετικό.Όλα είναι ίδια με τη δημιουργία της σύνδεσης TCP, αλλά μετά από αυτό πρέπει να δημιουργηθεί μια κρυπτογραφημένη σήραγγα TLS.Ο στόχος είναι να μην διαρρεύσει καμία πληροφορία σχετικά με το αίτημα.

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

Αυτό παρουσιάζει ένα πρόβλημα.Πώς γνωρίζει ο διακομιστής ιστού το πιστοποιητικό του κεντρικού υπολογιστή / ιστότοπου που πρέπει να στείλει, εάν πρέπει να το κάνει πριν λάβει το αίτημα HTTP;

Παραδοσιακά, αυτό επιλύθηκε έχοντας μια αποκλειστική διεύθυνση IP( ή θύρα) για κάθε ιστότοπο που απαιτεί HTTPS.Προφανώς, αυτό έχει καταστεί προβληματικό καθώς εξαντλούμε τις διευθύνσεις IPv4.

Πληκτρολογήστε SNI( Ένδειξη ονόματος διακομιστή).Το πρόγραμμα περιήγησης περάσει τώρα το όνομα του κεντρικού υπολογιστή κατά τη διάρκεια των διαπραγματεύσεων TLS, οπότε ο διακομιστής ιστού έχει τις πληροφορίες αυτές αρκετά νωρίς για να στείλει το σωστό πιστοποιητικό.Στην πλευρά του εξυπηρετητή ιστού, η διαμόρφωση είναι πολύ παρόμοια με τον τρόπο με τον οποίο διαμορφώνονται οι εικονικοί κεντρικοί υπολογιστές HTTP.

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

Τι θα κάνετε εάν ζητήσετε μια ιστοσελίδα μόνο με διεύθυνση IP;

Τι κάνει ο διακομιστής ιστού όταν δεν γνωρίζει ποιος συγκεκριμένος κεντρικός υπολογιστής ζητήσατε εξαρτάται από την υλοποίηση και τη διαμόρφωση του διακομιστή ιστού.Συνήθως, έχει οριστεί ένας ιστότοπος "default", "catch-all" ή "fall back" που θα παρέχει απαντήσεις σε όλα τα αιτήματα που δεν καθορίζουν ρητά έναν κεντρικό υπολογιστή.

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

Έχετε κάτι να προσθέσετε στην εξήγηση;Απενεργοποιήστε τα σχόλια.Θέλετε να διαβάσετε περισσότερες απαντήσεις από άλλους χρήστες τεχνολογίας Stack Exchange;Δείτε το πλήρες νήμα συζήτησης εδώ.