Cara menggunakan nginx untuk mengarahkan semua lalu lintas dari http ke https

Cara menggunakan nginx untuk mengarahkan semua lalu lintas dari http ke https

Jika situs web Anda di -host dengan nginx dan telah diaktifkan SSL, praktik terbaik untuk menonaktifkan HTTP sepenuhnya dan memaksa semua lalu lintas yang masuk ke versi https dari situs web ini. Ini menghindari duplikat konten dan memastikan bahwa semua pengguna situs hanya menelusuri versi aman dari situs web Anda. Anda juga harus melihat dorongan SEO, karena mesin pencari lebih suka halaman web yang tidak redundan dan aman.

Dalam panduan ini, kami akan menganggap Anda sudah menggunakan Nginx pada sistem Linux dan ingin mengarahkan semua lalu lintas HTTP ke HTTPS. Bahkan jika pengguna kebetulan mengikuti http: // Tautan, Situs harus mengirimkannya ke halaman yang benar dan diamankan, yang terjadi secara instan dan tanpa intervensi pengguna.

Ada dua cara untuk mengatur pengalihan ini di nginx. Salah satu metode memungkinkan Anda untuk mengonfigurasi pengalihan untuk masing -masing situs. Metode lain dapat mengarahkan kembali http ke https untuk semua situs nginx di server Anda, yang berguna jika Anda memiliki beberapa situs pengaturan dan ingin menghindari harus menerapkan pengalihan yang sama persis untuk masing -masing. Kami akan membahas instruksi langkah demi langkah untuk kedua metode di bawah ini. Ayo Memulai.

CATATAN
Menggunakan apache, bukan nginx? Kami telah menulis panduan terpisah untuk cara menggunakan Apache untuk mengarahkan semua lalu lintas http ke https.

Dalam tutorial ini Anda akan belajar:

  • Cara mengarahkan http ke https untuk situs web nginx individual
  • Cara mengarahkan http ke https untuk semua situs web nginx
Redirect HTTP Traffic ke HTTPS di Nginx Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, konvensi atau versi perangkat lunak yang digunakan
Sistem Distro Linux apa pun
Perangkat lunak Nginx
Lainnya Akses istimewa ke sistem Linux Anda sebagai root atau melalui sudo memerintah.
Konvensi # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
$ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa

Redirect http ke https untuk masing -masing situs



Kita perlu membuat perubahan pada file konfigurasi server nginx untuk mengarahkan lalu lintas. Buka dengan editor teks pilihan Anda.

$ sudo nano/etc/nginx/situs-tersedia/your_conf_file 

Harus ada setidaknya dua blok dalam file ini - satu yang mengontrol konfigurasi untuk koneksi HTTP (port 80) dan satu yang mengontrol HTTPS (port 443). Di bawah bagian http, masukkan 301 kode pengalihan berikut. Tentu saja, ganti domain contoh dengan domain situs Anda.

server dengarkan 80; Contoh server_name.com www.contoh.com; return 301 https: // contoh.com $ request_uri;  

Seperti yang Anda lihat, kode tersebut mendengarkan port 80 untuk koneksi yang masuk contoh.com Dan www.contoh.com. Kemudian mengarahkan kembali koneksi tersebut ke URL yang sama tetapi dengan https: //.

Di bawah blok http, Anda akan memerlukan blok https jika Anda belum membuatnya.

server dengarkan 80; Contoh server_name.com www.contoh.com; return 301 https: // contoh.com $ request_uri;  server dengarkan 443 SSL; Contoh server_name.com; Contoh SSL_Certificate.com.CRT; Contoh SSL_CERTIFICATE_KEY.com.kunci; # konfigurasi lain 

Tapi bagaimana dengan koneksi https: // www.contoh.com (Perhatikan www.)? Untuk mengarahkan kembali koneksi itu, kita akan membutuhkan blok lain dengan pengalihan 301. Secara lengkap, file konfigurasi akan terlihat seperti ini (meskipun milik Anda mungkin memiliki konfigurasi tambahan):

server  # redirect semua http ke https dengarkan 80; Contoh server_name.com www.contoh.com; return 301 https: // contoh.com $ request_uri;  server  # Redirect https www. Dengarkan 443 SSL; server_name www.contoh.com; return 301 https: // contoh.com $ request_uri;  server dengarkan 443 SSL; Contoh server_name.com; Contoh SSL_Certificate.com.CRT; Contoh SSL_CERTIFICATE_KEY.com.kunci; # konfigurasi lain 


Pastikan Anda menggunakan perintah SystemCTL untuk memulai kembali atau memuat ulang Nginx agar perubahan baru ini berlaku.

$ sudo systemctl Reload nginx 

Situs Anda sekarang harus selalu mengarahkan ke URL dengan format https: // contoh.com, terlepas dari tautan yang diawali oleh http: // dan/atau www..

Redirect http ke https untuk semua situs

Untuk mengarahkan lalu lintas untuk semua situs web yang di-host NGINX Anda, masukkan kode berikut di file konfigurasi Anda:

server listen 80 default_server; Dengarkan [::]: 80 default_server; nama server _; Return 301 https: // $ host $ request_uri;  

Ini hampir sama dengan kode di atas, kecuali menggunakan variabel $ host Jadi dapat diterapkan pada url apa pun yang dihosting Nginx. Metode ini mungkin sedikit lebih nyaman, tetapi Anda akan kehilangan beberapa kontrol granular yang Anda miliki saat setiap situs memiliki blok server sendiri. Gunakan kebijaksanaan Anda sendiri dan pilih metode mana pun yang Anda suka.

Kesimpulan

Dalam sebagian besar kasus, tidak ada alasan untuk terus menggunakan HTTP ketika situs Anda dapat menawarkan https. Lebih aman, memberikan ketenangan pikiran pengguna, dan situs ini akan mendapatkan sedikit dorongan SEO. Dalam artikel ini, kami melihat betapa mudahnya mengarahkan semua lalu lintas ke https dan menyingkirkan http sepenuhnya. Salah satu dari metode ini layak untuk memaksa lalu lintas HTTP ke HTTPS di situs web Anda.

Tutorial Linux Terkait:

  • Ubuntu 20.04: WordPress dengan instalasi nginx
  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Pengantar Mesin Penyimpanan MySQL
  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Ubuntu 20.04 WordPress dengan Instalasi Apache
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Menguasai loop skrip bash
  • Hal -hal yang harus diinstal pada Ubuntu 22.04
  • Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
  • Ubuntu 20.04 Panduan