15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai
01.11.2024
3 +1

Cara Redirect HTTP ke HTTPS di Linux dengan Nginx (Panduan Lengkap)

Mengamankan situs web Anda dengan HTTPS tidak lagi bersifat opsional — ini adalah persyaratan fundamental untuk melindungi data pengguna, mempertahankan kepercayaan, dan mencapai peringkat SEO yang kuat. Mesin pencari seperti Google secara aktif menghukum situs HTTP yang tidak terenkripsi, sementara browser modern menandainya sebagai "Not Secure." Mengarahkan semua lalu lintas HTTP ke HTTPS memastikan setiap pengunjung mencapai versi terenkripsi situs Anda secara otomatis, tanpa intervensi manual apa pun.

Panduan komprehensif ini memandu Anda melalui seluruh proses: memahami perbedaan antara HTTP dan HTTPS, memasang sertifikat SSL gratis melalui Let’s Encrypt, mengonfigurasi pengalihan 301 permanen di Nginx, dan memverifikasi semuanya berfungsi dengan benar di server Linux Anda.

Daftar Isi

  1. HTTP vs. HTTPS: Apa Perbedaannya?
  2. Prasyarat
  3. Langkah 1: Pasang Sertifikat SSL dengan Let’s Encrypt
  4. Langkah 2: Konfigurasi Nginx untuk Mengarahkan HTTP ke HTTPS
  5. Langkah 3: Uji Konfigurasi Nginx Anda
  6. Langkah 4: Muat Ulang Nginx untuk Menerapkan Perubahan
  7. Langkah 5: Verifikasi Pengalihan Berfungsi
  8. Masalah Umum dan Pemecahan Masalah
  9. Kesimpulan

1. HTTP vs. HTTPS: Apa Perbedaannya? {#http-vs-https}

Sebelum mendalami konfigurasi, penting untuk memahami mengapa pengalihan ini penting.

HTTP (Hypertext Transfer Protocol)

HTTP adalah protokol dasar yang digunakan untuk mengirimkan data antara browser web dan server. Namun, ia mengirimkan semua data dalam teks biasa, artinya informasi apa pun — kredensial login, detail pembayaran, data pribadi — dapat disadap oleh penyerang menggunakan serangan man-in-the-middle (MITM). HTTP tidak menawarkan enkripsi, autentikasi, atau jaminan integritas data.

HTTPS (HTTP Secure)

HTTPS adalah ekstensi aman dari HTTP. Ini membungkus protokol HTTP standar di dalam enkripsi SSL/TLS, menciptakan terowongan terenkripsi antara klien dan server. Ini memastikan:

  • Kerahasiaan — Data tidak dapat dibaca oleh pihak ketiga dalam transit.
  • Integritas — Data tidak dapat dirusak selama transmisi.
  • Autentikasi — Pengguna dapat memverifikasi mereka berkomunikasi dengan server yang sah.
  • Keuntungan SEO — Google menggunakan HTTPS sebagai sinyal peringkat, memberikan situs aman keunggulan yang terukur.
  • Kepercayaan Browser — Chrome, Firefox, dan Edge menampilkan ikon gembok untuk situs HTTPS dan peringatan "Not Secure" untuk situs HTTP.

Intinya: menjalankan situs web tanpa HTTPS di lingkungan saat ini adalah risiko keamanan dan bisnis yang serius.

2. Prasyarat {#prerequisites}

Sebelum mengikuti panduan ini, pastikan Anda memiliki hal berikut:

  • Server Linux (Ubuntu 20.04/22.04, Debian 11/12, atau serupa) yang menjalankan Nginx
  • Nama domain terdaftar yang menunjuk ke alamat IP server Anda
  • Akses root atau sudo ke server Anda
  • Keakraban dasar dengan baris perintah Linux

Jika Anda mencari lingkungan server yang andal untuk menghosting situs web Anda, VPS Hosting dari AlexHost menyediakan paket VPS Linux yang dikelola sepenuhnya dan tidak dikelola yang dioptimalkan untuk aplikasi web, dengan penyimpanan SSD dan jaringan ketersediaan tinggi.

Anda juga akan memerlukan sertifikat SSL yang valid. Panduan ini menggunakan sertifikat Let’s Encrypt gratis melalui Certbot. Jika Anda memerlukan sertifikat validasi diperpanjang (EV) atau divalidasi organisasi (OV) untuk penggunaan bisnis, pertimbangkan untuk menjelajahi Sertifikat SSL dari AlexHost.

3. Langkah 1: Pasang Sertifikat SSL dengan Let’s Encrypt {#install-ssl}

Let’s Encrypt adalah otoritas sertifikat gratis, otomatis, dan terbuka. Certbot adalah klien resmi yang mengotomatisasi proses memperoleh dan memperbarui sertifikat SSL/TLS dari Let’s Encrypt dan mengonfigurasi server web Anda.

Pasang Certbot dan Plugin Nginx

Perbarui indeks paket Anda dan pasang Certbot bersama dengan plugin Nginx:

sudo apt update
sudo apt install certbot python3-certbot-nginx -y

Dapatkan dan Pasang Sertifikat SSL Anda

Jalankan Certbot dengan bendera --nginx untuk secara otomatis memperoleh sertifikat dan mengonfigurasi Nginx untuk menggunakannya:

sudo certbot --nginx -d example.com -d www.example.com

Ganti example.com dengan nama domain aktual Anda. Certbot akan:

  1. Verifikasi kepemilikan domain melalui tantangan ACME
  2. Dapatkan sertifikat yang ditandatangani dari Let’s Encrypt
  3. Secara otomatis memodifikasi konfigurasi Nginx untuk mengaktifkan HTTPS pada port 443
  4. Secara opsional mengatur pengalihan HTTP-ke-HTTPS otomatis (Anda dapat melewati langkah ini di Certbot dan mengonfigurasinya secara manual seperti yang ditunjukkan di bawah untuk kontrol penuh)

Aktifkan Pembaruan Sertifikat Otomatis

Sertifikat Let’s Encrypt kedaluwarsa setiap 90 hari. Certbot memasang timer systemd atau pekerjaan cron untuk menangani pembaruan secara otomatis. Verifikasi bahwa itu aktif:

sudo systemctl status certbot.timer

Anda juga dapat melakukan tes pembaruan dry-run:

sudo certbot renew --dry-run

4. Langkah 2: Konfigurasi Nginx untuk Mengarahkan HTTP ke HTTPS {#configure-nginx}

Dengan sertifikat SSL Anda terpasang, Anda sekarang perlu mengonfigurasi Nginx untuk secara permanen mengarahkan semua lalu lintas HTTP (port 80) ke HTTPS (port 443). Ini dilakukan menggunakan pengalihan 301 Moved Permanently, yang merupakan jenis pengalihan yang benar untuk SEO — ini meneruskan ekuitas tautan ke versi HTTPS halaman Anda.

Buka Konfigurasi Blok Server Nginx Anda

Konfigurasi situs Nginx biasanya disimpan di /etc/nginx/sites-available/. Buka file konfigurasi untuk domain Anda:

sudo nano /etc/nginx/sites-available/example.com

Konfigurasi Blok Pengalihan HTTP-ke-HTTPS

File konfigurasi Anda akan berisi satu atau lebih blok server. Temukan blok yang mendengarkan port 80 (HTTP) dan ganti atau perbarui dengan aturan pengalihan berikut:

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;

    # Permanently redirect all HTTP requests to HTTPS
    return 301 https://$host$request_uri;
}

Blok server HTTPS Anda (port 443), yang mungkin dikonfigurasi secara otomatis oleh Certbot, akan terlihat serupa dengan ini:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name example.com www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    root /var/www/example.com/html;
    index index.html index.php;

    location / {
        try_files $uri $uri/ =404;
    }
}

> Mengapa menggunakan return 301 daripada rewrite?

> Direktif return 301 lebih cepat dan lebih efisien daripada aturan rewrite. Ini segera mengembalikan respons pengalihan tanpa memerlukan Nginx untuk memproses blok lokasi tambahan, mengurangi overhead server dan meningkatkan waktu respons.

Memahami Direktif Pengalihan

KomponenPenjelasan
listen 80Nginx mendengarkan koneksi masuk pada port HTTP 80
listen [::]:80Mengaktifkan dukungan IPv6 pada port 80
server_nameMenentukan nama domain mana yang berlaku untuk blok ini
return 301Mengeluarkan pengalihan permanen (terbaik untuk SEO)
https://$hostMempertahankan nama host asli dalam pengalihan
$request_uriMempertahankan jalur URI asli lengkap dan string kueri

5. Langkah 3: Uji Konfigurasi Nginx Anda {#test-nginx}

Jangan pernah muat ulang atau mulai ulang Nginx tanpa menguji konfigurasi Anda terlebih dahulu. Kesalahan sintaks dalam file konfigurasi Anda akan menyebabkan Nginx gagal dimulai, membawa situs web Anda offline.

Jalankan tes konfigurasi Nginx bawaan:

sudo nginx -t

Tes yang berhasil menghasilkan output berikut:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Jika Anda melihat kesalahan apa pun, tinjau output dengan cermat. Nginx akan menunjukkan file dan nomor baris tempat masalah terdeteksi. Masalah umum meliputi:

  • Titik koma yang hilang di akhir direktif
  • Kurung kurawal yang tidak ditutup {}
  • Jalur file yang salah untuk sertifikat SSL
  • Entri server_name duplikat

Perbaiki kesalahan yang dilaporkan sebelum melanjutkan.

6. Langkah 4: Muat Ulang Nginx untuk Menerapkan Perubahan {#reload-nginx}

Setelah tes konfigurasi lulus, muat ulang Nginx untuk menerapkan perubahan Anda. Menggunakan reload daripada restart lebih disukai karena menerapkan konfigurasi baru dengan lancar tanpa menghilangkan koneksi aktif:

sudo systemctl reload nginx

Untuk mengonfirmasi Nginx berjalan dengan benar setelah muat ulang:

sudo systemctl status nginx

Anda harus melihat active (running) dalam output.

7. Langkah 5: Verifikasi Pengalihan Berfungsi {#verify-redirect}

Dengan Nginx dimuat ulang, saatnya mengonfirmasi bahwa pengalihan berfungsi dengan benar.

Metode 1: Tes Browser

  1. Buka browser web Anda.
  2. Navigasikan ke http://example.com (menggunakan HTTP, bukan HTTPS).
  3. Amati bahwa browser secara otomatis mengarahkan Anda ke https://example.com.
  4. Konfirmasi ikon gembok muncul di bilah alamat, menunjukkan koneksi SSL yang valid.

Metode 2: Tes Baris Perintah dengan curl

Gunakan curl dengan bendera -I untuk mengambil hanya header respons HTTP tanpa mengunduh badan halaman:

curl -I http://example.com

Pengalihan yang dikonfigurasi dengan benar menghasilkan respons berikut:

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Mon, 01 Jan 2025 12:00:00 GMT
Content-Type: text/html
Location: https://example.com/
Connection: keep-alive

Indikator kunci untuk diverifikasi:

  • Kode status 301 Moved Permanently — Mengonfirmasi pengalihan permanen ada.
  • Location: https://example.com/ — Mengonfirmasi lalu lintas dialihkan ke versi HTTPS.

Metode 3: Pemeriksa Pengalihan Online

Anda juga dapat menggunakan alat online gratis seperti redirect-checker.org atau httpstatus.io untuk melacak rantai pengalihan lengkap dan mengonfirmasi tidak ada loop pengalihan atau lompatan yang tidak perlu.

8. Masalah Umum dan Pemecahan Masalah {#troubleshooting}

Loop Pengalihan

Gejala: Browser menampilkan kesalahan "Terlalu banyak pengalihan".

Penyebab: Blok server HTTPS Anda juga memicu pengalihan kembali ke HTTP, menciptakan loop tak terbatas.

Perbaikan: Pastikan direktif return 301 ada hanya di blok server HTTP (port 80), bukan di blok HTTPS (port 443).

Peringatan Konten Campuran

Gejala: Ikon gembok menampilkan peringatan bahkan setelah pengalihan berfungsi.

Penyebab: Halaman HTML Anda masih mereferensikan sumber daya HTTP (gambar, skrip, stylesheet) menggunakan URL http://.

Perbaikan: Perbarui semua URL sumber daya internal untuk menggunakan https:// atau URL relatif protokol (//). Gunakan plugin seperti Really Simple SSL untuk situs WordPress.

Sertifikat SSL Tidak Ditemukan

Gejala: Nginx gagal dimulai dengan kesalahan tentang file sertifikat yang hilang.

Penyebab: Jalur yang ditentukan dalam ssl_certificate dan ssl_certificate_key tidak cocok dengan lokasi file sertifikat aktual.

Perbaikan: Verifikasi jalur sertifikat dengan:

sudo ls /etc/letsencrypt/live/example.com/

Pembaruan Certbot Gagal

Gejala: Pembaruan otomatis gagal dengan kesalahan koneksi.

Penyebab: Port 80 mungkin diblokir oleh firewall, mencegah tantangan HTTP-01 Let’s Encrypt dari selesai.

Perbaikan: Pastikan port 80 terbuka di firewall Anda:

###PPT_NOTR_15_

15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai