Dalam artikel ini, kami akan mengusahakan cara mengarahkan lalu lintas web dari HTTP ke HTTPS yang selamat di Nginx.
Respons dan permintaan dikembalikan dalam bentuk teks biasa dalam HTTP, sedangkan HTTPS menggunakan SSL / TLS untuk mengenkripsi komunikasi antara sistem pelanggan dan pelayan. Oleh itu kerana banyak sebab, HTTPS digunakan melalui HTTP, yang disenaraikan di bawah:
- Semua data antara pelayan pelanggan di kedua-dua arah dienkripsi. Walau bagaimanapun, sesiapa sahaja tidak dapat mengakses maklumat sensitif jika dipintas.
- Semasa anda menggunakan HTTPS, Google Chrome dan penyemak imbas lain akan menganggap domain laman web anda sebagai selamat.
- Versi HTTPS meningkatkan prestasi laman web anda yang ditentukan menggunakan protokol HTTP / 2.
- Sekiranya anda melayani domain laman web anda melalui HTTPS, maka laman web akan berada di kedudukan yang lebih baik di Google, kerana ia menyokong semua laman web yang dilindungi HTTPS.
Adalah lebih baik untuk mengalihkan HTTP lalu lintas ke HTTPS di Nginx dalam blok pelayan yang berasingan untuk setiap versi laman web. Dianjurkan juga untuk mengelakkan pengalihan lalu lintas menggunakan arah "jika" yang boleh menyebabkan tingkah laku pelayan yang tidak biasa.
Ubah arah semua lalu lintas dari HTTP ke HTTPS
Tambahkan perubahan berikut ke dalam file konfigurasi Nginx untuk mengalihkan semua lalu lintas dari HTTP ke versi HTTPS:
pelayandengarkan 80 default_server;
nama pelayan _;
pulangkan 301 https: // $ host $ request_uri;
Di bawah ini, kami telah menghuraikan setiap istilah yang disebutkan di atas:
Dengarkan 80 default_server - ini akan memberi isyarat kepada sistem anda yang menangkap semua trafik HTTP di Port 80.
Server_name _ - ia adalah domain yang akan dipadankan dengan nama host apa pun.
Return 301 https: // $ host $ request_uri - ini memberitahu enjin carian anda yang mengarahkannya secara kekal. Ini menentukan bahawa pemboleh ubah $ host menyimpan nama domain.
Sebaik sahaja anda menukar tetapan konfigurasi, anda perlu memuatkan semula perkhidmatan Nginx pada sistem anda. Oleh itu, muatkan semula perkhidmatan Nginx anda dengan menggunakan arahan berikut:
$ sudo systemctl muat semula nginxUbah hala HTTP ke versi HTTPS untuk Domain yang ditentukan di Nginx
Setelah memasang sijil SSL di domain anda, anda akan mempunyai dua pilihan blok pelayan untuk domain ini. Satu blok adalah untuk versi HTTP yang mendengar pada port 80, dan versi kedua adalah HTTPS pada port 443. Walau bagaimanapun, untuk mengalihkan satu domain laman web dari HTTP ke HTTPS, anda perlu membuka konfigurasi Nginx. Anda boleh mencari fail konfigurasi ini di direktori / etc / nginx / sites-available. Bagaimanapun, jika anda tidak menemui fail ini, anda boleh mencarinya dengan / etc / nginx / nginx.conf, / usr / local / nginx / conf atau / usr / local / etc / nginx, dan kemudian lakukan perubahan berikut dalam fail ini:
pelayandengar 80;
nama-nama domain pelayan.com www.nama domain.com;
pulangkan 301 https: // nama-domain.com $ request_uri;
Mari kita fahami baris demi baris kod di atas.
Dengarkan 80 - menggunakan port 80, pelayan akan mendengar semua domain masuk yang ditentukan.
Nama domain-nama pelayan.com www.nama domain.com - ia menentukan nama domain. Oleh itu, gantikan dengan nama domain laman web anda yang ingin anda ubah hala.
Kembalikan 301 https: // nama-domain.com $ request_uri - ia mengalihkan lalu lintas ke versi HTTPS laman web. Pemboleh ubah $ request_uri digunakan untuk URI permintaan asal penuh di mana argumen juga disertakan.
Dengan kaedah berikut, anda boleh mengalihkan lalu lintas ke versi HTTPS www ke versi laman web bukan www. Adalah disyorkan untuk membuat pengalihan di blok pelayan yang berasingan untuk versi bukan www dan www.
Mari kita jelaskan dengan contoh. Sekiranya anda ingin mengalihkan permintaan HTTP www ke versi bukan www, maka anda akan mengikuti konfigurasi berikut:
pelayandengar 80;
nama_ nama domain pelayan.com www.nama domain.com;
pulangkan 301 https: // nama-domain.com $ request_uri;
pelayan
dengar 443 ssl http2;
pelayan_nama www.nama domain.com;
# ... kod lain
pulangkan 301 https: // nama-domain.com $ request_uri;
pelayan
dengar 443 ssl http2;
nama_ nama domain pelayan.com;
# ... kod lain
Ganti nama domain dengan domain anda, seperti www.linuxhint.com.
Kesimpulannya
Kami telah membincangkan cara mengarahkan lalu lintas dari versi HTTP ke HTTPS pada pelayan Nginx. Dengan mengubah tetapan fail konfigurasi Nginx, anda dapat dengan mudah mengalihkan lalu lintas ke HTTPS sama ada untuk domain yang ditentukan atau mengalihkan semua. Kaedah ini, yang telah kami sebutkan dalam artikel ini, dapat membantu anda menjadikan laman web anda lebih selamat dengan membuat perubahan dalam pengalaman pengguna.