Cara Menggunakan Nginx Untuk Mengalihkan Semua Lalu Lintas Dari HTTP ke HTTPS

Cara Menggunakan Nginx Untuk Mengalihkan Semua Lalu Lintas Dari HTTP ke HTTPS

Jika laman web anda dihoskan dengan NGINX dan ia telah diaktifkan SSL, amalan terbaik untuk melumpuhkan HTTP sepenuhnya dan memaksa semua trafik masuk ke versi HTTPS laman web. Ini mengelakkan kandungan pendua dan memastikan bahawa semua pengguna laman web hanya melayari versi selamat laman web anda. Anda juga harus melihat rangsangan SEO, kerana enjin carian lebih suka laman web yang tidak berlebihan dan terjamin.

Dalam panduan ini, kami akan menganggap anda sudah menggunakan nginx pada sistem Linux dan ingin mengalihkan semua trafik HTTP ke HTTPS. Walaupun pengguna berlaku mengikuti http: // pautan, laman web ini harus menghantarnya ke halaman yang betul dan selamat, yang berlaku dengan serta -merta dan tanpa campur tangan pengguna.

Terdapat dua cara untuk menyediakan pengalihan semula ini di nginx. Satu kaedah membolehkan anda mengkonfigurasi pengalihan semula untuk laman web individu. Kaedah lain boleh mengalihkan http ke https untuk semua laman web nginx di pelayan anda, yang berguna jika anda mempunyai beberapa persediaan tapak dan ingin mengelakkan harus menggunakan pengalihan yang sama kepada setiap satu. Kami akan meliputi arahan langkah demi langkah untuk kedua -dua kaedah di bawah. Mari kita mulakan.

CATATAN
Menggunakan Apache dan bukannya nginx? Kami telah menulis panduan berasingan untuk menggunakan Apache untuk mengalihkan semua trafik HTTP ke HTTPS.

Dalam tutorial ini anda akan belajar:

  • Cara mengalihkan http ke https untuk laman web nginx individu
  • Cara Mengalihkan HTTP ke HTTPS untuk semua laman web nginx
Mengalihkan trafik http ke https di nginx Keperluan Perisian dan Konvensyen Talian Perintah Linux
Kategori Keperluan, konvensyen atau versi perisian yang digunakan
Sistem Mana -mana distro Linux
Perisian Nginx
Yang lain Akses istimewa ke sistem linux anda sebagai akar atau melalui sudo perintah.
Konvensyen # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
$ - Memerlukan arahan Linux yang diberikan sebagai pengguna yang tidak layak

Redirect http ke https untuk laman web individu



Kita perlu membuat perubahan pada fail konfigurasi pelayan nginx untuk mengalihkan trafik. Buka dengan editor teks pilihan anda.

$ sudo nano/etc/nginx/sites-available/your_conf_file 

Harus ada sekurang -kurangnya dua blok dalam fail ini - yang mengawal konfigurasi untuk sambungan HTTP (port 80) dan satu yang mengawal HTTPS (port 443). Di bawah bahagian HTTP, masukkan kod redirect 301 berikut. Sudah tentu, ganti domain contoh dengan domain laman web anda.

pelayan mendengar 80; Contoh Server_name.com www.Contoh.com; Kembali 301 https: // Contoh.com $ request_uri;  

Seperti yang anda lihat, kod mendengar pada port 80 untuk sambungan masuk ke Contoh.com dan www.Contoh.com. Ia kemudian mengalihkan sambungan tersebut ke url yang sama tetapi dengan https: //.

Di bawah blok HTTP, anda memerlukan blok HTTPS jika anda belum membuatnya.

pelayan mendengar 80; Contoh Server_name.com www.Contoh.com; Kembali 301 https: // Contoh.com $ request_uri;  pelayan mendengar 443 ssl; Contoh Server_name.com; Contoh SSL_Certificate.com.CRT; Contoh SSL_Certificate_key.com.kunci; # konfigurasi lain 

Tetapi bagaimana dengan sambungan ke https: // www.Contoh.com (perhatikan www.)? Untuk mengalihkan sambungan tersebut juga, kami memerlukan blok lain dengan 301 Redirect. Secara penuh, fail konfigurasi akan kelihatan seperti ini (walaupun anda mungkin mempunyai konfigurasi tambahan):

pelayan  # redirect semua http ke https mendengar 80; Contoh Server_name.com www.Contoh.com; Kembali 301 https: // Contoh.com $ request_uri;  pelayan  # redirect https www. Dengar 443 SSL; server_name www.Contoh.com; Kembali 301 https: // Contoh.com $ request_uri;  pelayan mendengar 443 ssl; Contoh Server_name.com; Contoh SSL_Certificate.com.CRT; Contoh SSL_Certificate_key.com.kunci; # konfigurasi lain 


Pastikan anda menggunakan arahan SystemCtl untuk memulakan semula atau memuatkan semula nginx agar perubahan baru ini berkuat kuasa.

$ sudo Systemctl Reload nginx 

Laman web anda sekarang harus selalu mengalihkan ke URL dengan format https: // contoh.com, tanpa mengira pautan yang dikemukakan oleh http: // dan/atau www..

Redirect http ke https untuk semua laman web

Untuk mengalihkan trafik untuk semua laman web yang dihoskan Nginx anda, masukkan kod berikut dalam fail konfigurasi anda:

pelayan mendengar 80 default_server; Dengar [::]: 80 default_server; nama pelayan _; kembali 301 https: // $ host $ request_uri;  

Ini sama seperti kod di atas, kecuali menggunakan pembolehubah $ host Oleh itu, ia boleh digunakan untuk mana -mana URL yang dianjurkan oleh Nginx. Kaedah ini mungkin sedikit lebih mudah, tetapi anda akan kehilangan beberapa kawalan berbutir yang anda miliki apabila setiap tapak mempunyai blok pelayan sendiri. Gunakan budi bicara anda sendiri dan pilih kaedah yang anda suka.

Kesimpulan

Dalam kebanyakan kes, tidak ada sebab untuk terus menggunakan HTTP apabila laman web anda boleh menawarkan HTTPS. Lebih selamat, memberikan ketenangan fikiran pengguna, dan laman web ini akan mendapat sedikit rangsangan SEO. Dalam artikel ini, kita melihat betapa mudahnya untuk mengalihkan semua lalu lintas ke HTTPS dan menyingkirkan HTTP sepenuhnya. Sama ada kaedah ini berdaya maju untuk memaksa trafik HTTP ke HTTPS di laman web anda.

Tutorial Linux Berkaitan:

  • Ubuntu 20.04: WordPress dengan pemasangan nginx
  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Pengenalan kepada enjin penyimpanan MySQL
  • Pengenalan kepada Automasi, Alat dan Teknik Linux
  • Ubuntu 20.04 WordPress dengan pemasangan Apache
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Menguasai Gelung Skrip Bash
  • Perkara yang perlu dipasang di Ubuntu 22.04
  • Mint 20: Lebih baik daripada Ubuntu dan Microsoft Windows?
  • Ubuntu 20.04 Panduan