How to Redirect from WWW to Non-WWW on NGINX. Works for Http to Https too!
Πίνακας περιεχομένων:
Σε αυτόν τον οδηγό, θα εξηγήσουμε πώς μπορείτε να ανακατευθύνετε την επισκεψιμότητα HTTP στο HTTPS σε Nginx.
Nginx προφέρεται "κινητήρα x" είναι ένας ελεύθερος, ανοιχτού κώδικα, υψηλής απόδοσης HTTP και αντίστροφη διακομιστή μεσολάβησης που είναι υπεύθυνος για το χειρισμό του φορτίου ορισμένων από τις μεγαλύτερες τοποθεσίες στο Internet.
Σε αντίθεση με το HTTP, όπου τα αιτήματα και οι απαντήσεις αποστέλλονται και επιστρέφονται στο κείμενο, το HTTPS χρησιμοποιεί TLS / SSL για να κρυπτογραφήσει την επικοινωνία μεταξύ του πελάτη και του διακομιστή.
Υπάρχουν πολλά οφέλη από τη χρήση του HTTPS μέσω HTTP, όπως:
- Όλα τα δεδομένα είναι κρυπτογραφημένα και προς τις δύο κατευθύνσεις. Ως αποτέλεσμα, οι ευαίσθητες πληροφορίες δεν μπορούν να διαβαστούν αν παραληφθούν. Το Google Chrome και όλα τα άλλα δημοφιλή προγράμματα περιήγησης θα επισημάνουν τον ιστότοπό σας ως ασφαλή. Το HTTPS σάς επιτρέπει να χρησιμοποιήσετε το πρωτόκολλο HTTP / 2, το οποίο βελτιώνει σημαντικά την απόδοση του ιστότοπου. Ο ιστότοπός σας θα κατατάσσεται καλύτερα αν εξυπηρετείται μέσω
Η προτιμώμενη μέθοδος για την ανακατεύθυνση HTTP σε HTTPS σε Nginx είναι να διαμορφώσετε ένα ξεχωριστό μπλοκ διακομιστή για κάθε έκδοση του ιστότοπου. Πρέπει να αποφύγετε την ανακατεύθυνση της επισκεψιμότητας χρησιμοποιώντας την οδηγία if, καθώς ενδέχεται να προκαλέσει απρόβλεπτη συμπεριφορά του διακομιστή.
Ανακατεύθυνση HTTP σε HTTPS ανά ιστότοπο
Για να ανακατευθύνετε έναν ενιαίο ιστότοπο στο HTTPS, ανοίξτε το αρχείο διαμόρφωσης τομέα και πραγματοποιήστε τις ακόλουθες αλλαγές:
server { listen 80; listen:80; server_name linuxize.com www.linuxize.com; return 301 https://linuxize.com$request_uri; }
Ας καταρρίψουμε τη γραμμή κώδικα κατά γραμμή:
-
listen 80- Το μπλοκ διακομιστή θα ακούσει τις εισερχόμενες συνδέσεις στη θύρα 80 για τον καθορισμένο τομέα.server_name linuxize.com www.linuxize.com- Καθορίζει τα ονόματα τομέων του μπλοκ διακομιστή. Βεβαιωθείτε ότι το αντικαταστήσατε με το όνομα τομέα σας.return 301- Ανακατεύθυνση της επισκεψιμότητας στην έκδοση HTTPS του ιστότοπου. Η μεταβλητή$request_uriείναι το πλήρες αρχικό URI αιτήματος που περιλαμβάνει τα επιχειρήματα.
Συνήθως, θα θέλετε επίσης να ανακατευθύνετε την έκδοση HTTPS www της τοποθεσίας στο non-www ή το αντίστροφο. Ο συνιστώμενος τρόπος για να κάνετε την ανακατεύθυνση είναι να δημιουργήσετε ένα ξεχωριστό μπλοκ διακομιστή τόσο για εκδόσεις www όσο και για μη-www.
Για παράδειγμα, για να ανακατευθύνετε τα αιτήματα www HTTPS σε μη-www, θα χρησιμοποιούσατε την παρακάτω διαμόρφωση:
server { listen 80; listen:80; server_name linuxize.com www.linuxize.com; return 301 https://linuxize.com$request_uri; } server { listen 443 ssl http2; server_name www.linuxize.com; #… other code return 301 https://linuxize.com$request_uri; } server { listen 443 ssl http2; server_name linuxize.com; #… other code }
Ανακατεύθυνση όλων των ιστότοπων σε HTTPS
Αν όλοι οι ιστότοποι που φιλοξενούνται στον διακομιστή έχουν ρυθμιστεί ώστε να χρησιμοποιούν το HTTPS και δεν θέλετε να δημιουργήσετε ένα ξεχωριστό μπλοκ διακομιστή HTTP για κάθε ιστότοπο, μπορείτε να δημιουργήσετε ένα ενιαίο block server HTTP. Αυτό το μπλοκ θα ανακατευθύνει όλες τις αιτήσεις HTTP στα κατάλληλα μπλοκ
Για να δημιουργήσετε ένα ενιαίο μπλοκ HTTP που θα ανακατευθύνει τους επισκέπτες στην έκδοση HTTPS του ιστότοπου ανοίξτε το αρχείο ρυθμίσεων Nginx και πραγματοποιήστε τις ακόλουθες αλλαγές:
server { listen 80 default_server; listen:80 default_server; server_name _; return 301 https://$host$request_uri; }
Ας αναλύσουμε την γραμμή κώδικα κατά γραμμή:
-
listen 80 default_server- Ορίζει αυτό το μπλοκ διακομιστή ως το προεπιλεγμένο (catch-all) μπλοκ για όλους τους τομείς που δεν έχουν συμφωνηθεί.server_name _-_είναι ένα μη έγκυρο όνομα τομέα που δεν αντιστοιχεί ποτέ σε κανένα πραγματικό όνομα τομέα.return 301- Ανακατεύθυνση της επισκεψιμότητας στο αντίστοιχο μπλοκ διακομιστή HTTPS με τον κωδικό κατάστασης 301 (Moved Permanently). Η μεταβλητή$hostτο όνομα τομέα του αιτήματος.
Για παράδειγμα, αν ο επισκέπτης ανοίξει το
http://example.com/page2
στο πρόγραμμα περιήγησης, το Nginx θα ανακατευθύνει το αίτημα στη
https://example.com/page2
.
Εάν είναι δυνατόν, προτιμάτε να δημιουργήσετε μια ανακατεύθυνση σε μια βάση ανά τομέα, αντί για μια καθολική HTTP to redirect.
συμπέρασμα
Αφού έχετε εγκαταστήσει ένα πιστοποιητικό SSL στον ιστότοπό σας, θα πρέπει να ανακατευθύνετε την επισκεψιμότητα HTTP σε
Στο Nginx, ο προτιμώμενος τρόπος για να ανακατευθύνετε το HTTP στο HTTPS είναι να δημιουργήσετε ένα ξεχωριστό μπλοκ διακομιστή και να εκτελέσετε ανακατεύθυνση 301.
nginxΟι New York Times πήραν την ιστορία, αλλά αντί να εμφανίσουν τον δείγμα κώδικα, το εκτέλεσαν ως μέρος της σελίδας, προκαλώντας σε οποιονδήποτε ανοίγει την ιστορία να γίνει ανακατεύθυνση στην τοποθεσία ReadWriteWeb. Η αιτία? Μια ευπάθεια XSS (ορισμός), ένας τύπος ελάττωσης στο Web που μπορεί να στοχεύει στην κλοπή δεδομένων και να καταστρέψει με άλλο τρόπο την ημέρα σας.
Δείτε πώς φαίνεται η εσφαλμένη ερμηνεία στο NYT:
Διαφορά μεταξύ πρωτοκόλλου HTTP και HTTPS
Εξέλιξη HTTP, Πώς λειτουργεί το HTTPS και η διαφορά μεταξύ HTTP και HTTPS με απλούς όρους. Το HTTP Vs HTTPS ή το πρωτόκολλο μεταφοράς υπερκειμένου μέσω του Secure Socket Layer συζητήθηκε.
Η μετάβαση σε πιο ασφαλές πρότυπο https αρχίζει με τη θανάτωση του http
Το παλαιό πρότυπο HTTP πρέπει να πεθάνει για να είναι το HTTPS το de facto πρότυπο του Διαδικτύου. Η κίνηση έχει ξεκινήσει, αλλά δεν έχει ολοκληρωθεί.







