15%

Hemat 15% di Semua Layanan Hosting

Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

Gunakan kode:

Skills
Memulai
01.11.2024

Cara Menginstal Nginx dengan Dukungan HTTP/2 di Ubuntu (Panduan Lengkap)

Nginx adalah salah satu web server yang paling banyak digunakan di dunia, terkenal karena performa luar biasa, jejak memori rendah, dan kemampuannya menangani ribuan koneksi bersamaan. Ketika digabungkan dengan HTTP/2, Nginx menjadi platform yang jauh lebih powerful — memungkinkan multiplexed requests, header compression, server push, dan waktu loading halaman yang drastis berkurang.

Panduan komprehensif ini memandu Anda melalui setiap langkah yang diperlukan untuk menginstal Nginx dengan dukungan HTTP/2 penuh di Ubuntu 20.04 dan Ubuntu 22.04 LTS, dari setup awal hingga konfigurasi SSL, optimasi server block, dan verifikasi live.

> Panduan ini untuk siapa? Administrator sistem, developer, dan pemilik website yang ingin memaksimalkan performa web di server Linux. Jika Anda menjalankan situs di paket VPS Hosting atau Dedicated Server, tutorial ini berlaku langsung untuk lingkungan Anda.

Daftar Isi

  1. Apa Itu HTTP/2 dan Mengapa Penting?
  2. Prasyarat
  3. Langkah 1 — Perbarui Indeks Paket Sistem
  4. Langkah 2 — Instal Nginx
  5. Langkah 3 — Instal OpenSSL
  6. Langkah 4 — Dapatkan Sertifikat SSL Gratis dengan Let’s Encrypt
  7. Langkah 5 — Konfigurasi Nginx untuk HTTP/2
  8. Langkah 6 — Optimalkan Konfigurasi HTTP/2 Nginx Anda
  9. Langkah 7 — Uji Konfigurasi Nginx
  10. Langkah 8 — Restart Nginx dan Terapkan Perubahan
  11. Langkah 9 — Verifikasi HTTP/2 Aktif
  12. Troubleshooting Masalah Umum
  13. Kesimpulan

Apa Itu HTTP/2 dan Mengapa Penting?

HTTP/2 adalah versi utama kedua dari Hypertext Transfer Protocol, yang distandarisasi dalam RFC 7540. Dirancang untuk mengatasi keterbatasan performa HTTP/1.1, yang telah digunakan sejak 1997.

Keuntungan utama HTTP/2 dibanding HTTP/1.1:

FiturHTTP/1.1HTTP/2
MultiplexingSatu request per koneksiMultiple simultaneous requests
Header compressionPlain text headersHPACK compression
Server pushTidak didukungDidukung
Binary protocolText-basedBinary framing
Connection reuseTerbatasFully persistent
LatencyLebih tinggiSignificantly reduced

Bagi pemilik website, mengaktifkan HTTP/2 diterjemahkan langsung menjadi page loads lebih cepat, skor Core Web Vitals lebih baik, dan peringkat SEO yang ditingkatkan — karena Google menggunakan kecepatan halaman sebagai sinyal peringkat.

> Penting: HTTP/2 memerlukan HTTPS (TLS/SSL). Anda tidak dapat menjalankan HTTP/2 melalui koneksi yang tidak terenkripsi di browser modern manapun. Inilah mengapa mendapatkan sertifikat SSL adalah langkah wajib dalam panduan ini. Jika Anda membutuhkan sertifikat terpercaya untuk domain Anda, AlexHost menawarkan SSL Certificates untuk semua use case.

Prasyarat

Sebelum Anda memulai, pastikan Anda memiliki hal berikut:

  • Server yang menjalankan Ubuntu 20.04 LTS atau Ubuntu 22.04 LTS (langkah-langkahnya hampir identik untuk keduanya)
  • User non-root dengan sudo privileges atau akses root langsung
  • Nama domain terdaftar yang menunjuk ke alamat IP server Anda melalui A record
  • Port 80 dan 443 terbuka di firewall Anda (UFW atau iptables)
  • Keakraban dasar dengan command line Linux

Jika Anda belum memiliki domain, Anda dapat mendaftarnya langsung melalui AlexHost Domain Registration dan mengarahkannya ke server Anda dalam hitungan menit.

Langkah 1 — Perbarui Indeks Paket Sistem

Selalu mulai dengan menyegarkan indeks paket Anda untuk memastikan Anda menginstal versi terbaru yang tersedia dari semua software:

sudo apt update && sudo apt upgrade -y

Perintah ini memperbarui daftar paket lokal dan meningkatkan paket apa pun yang sudah ketinggalan zaman yang sudah diinstal di sistem Anda.

Langkah 2 — Instal Nginx

Instal Paket Nginx

Repositori default Ubuntu mencakup versi stabil Nginx. Instal dengan:

sudo apt install nginx -y

Mulai Layanan Nginx

Setelah diinstal, mulai layanan Nginx segera:

sudo systemctl start nginx

Aktifkan Nginx untuk Mulai Otomatis saat Boot

Pastikan Nginx diluncurkan secara otomatis setiap kali server di-reboot:

sudo systemctl enable nginx

Verifikasi Nginx Berjalan

Konfirmasi layanan aktif dan berjalan:

sudo systemctl status nginx

Anda harus melihat output yang mirip dengan:

● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since ...

Izinkan Nginx Melalui Firewall

Jika UFW aktif di server Anda, izinkan traffic HTTP dan HTTPS:

sudo ufw allow 'Nginx Full'
sudo ufw status

Nginx Full membuka port 80 (HTTP) dan port 443 (HTTPS), keduanya diperlukan untuk setup ini.

Langkah 3 — Instal OpenSSL

HTTP/2 bergantung pada TLS, yang pada gilirannya bergantung pada OpenSSL. Instal untuk memastikan semua dependensi kriptografi tersedia:

sudo apt install openssl -y

Verifikasi versi yang diinstal:

openssl version

Anda harus melihat output seperti OpenSSL 3.0.x atau serupa. Versi apa pun di atas 1.0.2 sepenuhnya mendukung cipher suite yang diperlukan untuk HTTP/2.

Langkah 4 — Dapatkan Sertifikat SSL Gratis dengan Let’s Encrypt

Let’s Encrypt menyediakan sertifikat SSL/TLS gratis yang dapat diperbaharui secara otomatis dan dipercaya oleh semua browser utama. Klien Certbot membuat seluruh proses menjadi mudah.

Instal Certbot dan Plugin Nginx

sudo apt install certbot python3-certbot-nginx -y

Minta Sertifikat SSL Anda

Ganti your_domain.com dengan nama domain terdaftar aktual Anda:

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

Certbot akan:

  1. Verifikasi kepemilikan domain melalui HTTP challenge
  2. Mengeluarkan sertifikat dari Let’s Encrypt
  3. Secara otomatis memodifikasi konfigurasi Nginx Anda untuk menggunakan sertifikat
  4. Menyiapkan redirect HTTPS dari HTTP

Ikuti prompt interaktif. Ketika ditanya apakah akan mengarahkan traffic HTTP ke HTTPS, pilih opsi 2 (Redirect) — ini adalah pilihan yang direkomendasikan.

Verifikasi Pembaruan Sertifikat Otomatis

Sertifikat Let’s Encrypt kadaluarsa setelah 90 hari. Certbot menginstal cron job atau systemd timer untuk memperbarui secara otomatis. Uji proses pembaruan dengan dry run:

sudo certbot renew --dry-run

Jika tidak ada error yang muncul, pembaruan otomatis dikonfigurasi dengan benar.

> Tip: Untuk lingkungan produksi dengan multiple domain atau wildcard certificate, pertimbangkan Dedicated Server untuk kontrol penuh atas infrastruktur SSL Anda.

Langkah 5 — Konfigurasi Nginx untuk HTTP/2

Sekarang SSL sudah ada, Anda perlu secara eksplisit mengaktifkan HTTP/2 dalam konfigurasi server block Nginx.

Buka File Konfigurasi Nginx

Konfigurasi situs default terletak di:

sudo nano /etc/nginx/sites-available/default

Jika Anda membuat server block kustom untuk domain Anda (direkomendasikan), buka file itu sebagai gantinya:

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

Perbarui Server Block untuk Mengaktifkan HTTP/2

Cari direktif listen 443 ssl;. Certbot akan menambahkan ini secara otomatis. Modifikasi untuk menyertakan http2:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name your_domain.com www.your_domain.com;

    # SSL Certificate paths (set by Certbot)
    ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    root /var/www/your_domain.com/html;
    index index.html index.htm index.php;

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

# HTTP to HTTPS redirect block
server {
    listen 80;
    listen [::]:80;
    server_name your_domain.com www.your_domain.com;
    return 301 https://$host$request_uri;
}

Perubahan kritis ada di baris listen: menambahkan http2 setelah ssl mengaktifkan protokol HTTP/2 untuk virtual host tersebut.

Simpan dan Keluar

Tekan CTRL + X, kemudian Y, kemudian Enter untuk menyimpan file dan keluar dari editor nano.

Langkah 6 — Optimalkan Konfigurasi HTTP/2 Nginx Anda

Sekadar mengaktifkan HTTP/2 adalah awal yang baik, tetapi menerapkan optimasi tambahan memastikan Anda mengekstrak performa maksimal dari setup Anda.

Pengaturan SSL dan Performa yang Direkomendasikan

Tambahkan atau verifikasi direktif berikut di dalam blok server Anda:

# Modern TLS protocols only
ssl_protocols TLSv1.2 TLSv1.3;

# Strong cipher suites compatible with HTTP/2
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;

# SSL session caching for performance
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;

# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

# HTTP Strict Transport Security (HSTS)
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

# Additional security headers
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";

# Gzip compression (complements HTTP/2)
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;

> Catatan tentang HTTP/2 dan Gzip: HTTP/2 menggunakan HPACK header compression-nya sendiri, tetapi mengaktifkan Gzip untuk response bodies masih memberikan penghematan bandwidth yang signifikan untuk aset berbasis teks.

Langkah 7 — Uji Konfigurasi Nginx

Jangan pernah restart Nginx tanpa terlebih dahulu menguji konfigurasi untuk syntax error. File yang salah konfigurasi dapat menghentikan seluruh web server Anda.

Jalankan tes konfigurasi built-in:

sudo nginx -t

Tes yang berhasil menghasilkan:

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

Jika Anda melihat error apa pun, tinjau output dengan cermat. Pesan error akan menyertakan nama file dan nomor baris di mana masalah terdeteksi.

Langkah 8 — Restart Nginx dan Terapkan Perubahan

Setelah tes konfigurasi lulus, restart Nginx untuk menerapkan semua perubahan:

sudo systemctl restart nginx

Alternatifnya, jika Anda lebih suka zero-downtime reload (yang menerapkan perubahan konfigurasi tanpa memutuskan koneksi aktif):

sudo systemctl reload nginx

Untuk aktivasi HTTP/2 khususnya, restart penuh direkomendasikan untuk memastikan pengaturan protokol baru sepenuhnya diinisialisasi.

Langkah 9 — Verifikasi HTTP/2 Aktif

Setelah restart Nginx, konfirmasi bahwa HTTP/2 benar-benar disajikan ke klien menggunakan salah satu metode berikut.

Metode 1: Menggunakan curl

Alat command-line curl dapat melaporkan versi protokol yang digunakan:

curl -I --http2 https://your_domain.com

Cari header response:

HTTP/2 200

Jika Anda melihat HTTP/2 200, HTTP/2 bekerja dengan benar.

Metode 2: Menggunakan Perintah OpenSSL

openssl s_client -connect your_domain.com:443 -alpn h2

Di output, cari:

ALPN protocol: h2

h2 adalah identifier ALPN untuk HTTP/2. Jika Anda melihat ini, server Anda dengan benar mengiklankan dukungan HTTP/2 selama TLS handshake.

Metode 3: Menggunakan Browser Developer Tools

  1. Buka website Anda di Google Chrome atau Mozilla Firefox
  2. Tekan F12 untuk membuka Developer Tools
  3. Navigasi ke tab Network
  4. Muat ulang halaman (F5 atau Ctrl+R)
  5. Klik kanan pada header kolom apa pun di daftar request dan aktifkan kolom Protocol
  6. Anda harus melihat h2 terdaftar sebagai protokol untuk request domain Anda

Metode 4: Menggunakan Alat Pengujian HTTP/2 Online

Kunjungi https://tools.keycdn.com/http2-test dan masukkan domain Anda. Alat akan mengkonfirmasi apakah HTTP/2 aktif dan memberikan detail tambahan tentang konfigurasi TLS server Anda.

Troubleshooting Masalah Umum

HTTP/2 Tidak Muncul di Browser Meskipun Dikonfigurasi

  • Penyebab: Browser cache koneksi HTTP/1.1 yang lebih lama.
  • Perbaikan: Hapus cache dan cookie browser, atau uji di jendela private/incognito.

nginx -t Mengembalikan SSL Certificate Error

  • Penyebab: Path sertifikat yang salah di file konfigurasi.
  • Perbaikan: Verifikasi path yang tepat menggunakan sudo ls /etc/letsencrypt/live/your_domain.com/ dan perbarui direktif ssl_certificate dan ssl_certificate_key sesuai kebutuhan.

Port 443 Tidak Dapat Diakses

  • Penyebab: Firewall memblokir traffic HTTPS.
  • Perbaikan: Jalankan sudo ufw allow 443/tcp dan verifikasi dengan sudo ufw status.

Certbot Gagal Validasi Domain

    15%

    Hemat 15% di Semua Layanan Hosting

    Uji kemampuanmu dan dapatkan Diskon pada paket hosting apa saja

    Gunakan kode:

    Skills
    Memulai