Android

Ανακατεύθυνση http σε https σε nginx

How to Redirect from WWW to Non-WWW on NGINX. Works for Http to Https too!

How to Redirect from WWW to Non-WWW on NGINX. Works for Http to Https too!

Πίνακας περιεχομένων:

Anonim

Σε αυτόν τον οδηγό, θα εξηγήσουμε πώς μπορείτε να ανακατευθύνετε την επισκεψιμότητα 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