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
- Apa Itu HTTP/2 dan Mengapa Penting?
- Prasyarat
- Langkah 1 — Perbarui Indeks Paket Sistem
- Langkah 2 — Instal Nginx
- Langkah 3 — Instal OpenSSL
- Langkah 4 — Dapatkan Sertifikat SSL Gratis dengan Let’s Encrypt
- Langkah 5 — Konfigurasi Nginx untuk HTTP/2
- Langkah 6 — Optimalkan Konfigurasi HTTP/2 Nginx Anda
- Langkah 7 — Uji Konfigurasi Nginx
- Langkah 8 — Restart Nginx dan Terapkan Perubahan
- Langkah 9 — Verifikasi HTTP/2 Aktif
- Troubleshooting Masalah Umum
- 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:
| Fitur | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Multiplexing | Satu request per koneksi | Multiple simultaneous requests |
| Header compression | Plain text headers | HPACK compression |
| Server push | Tidak didukung | Didukung |
| Binary protocol | Text-based | Binary framing |
| Connection reuse | Terbatas | Fully persistent |
| Latency | Lebih tinggi | Significantly 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
sudoprivileges 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 -yPerintah 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 -yMulai Layanan Nginx
Setelah diinstal, mulai layanan Nginx segera:
sudo systemctl start nginxAktifkan Nginx untuk Mulai Otomatis saat Boot
Pastikan Nginx diluncurkan secara otomatis setiap kali server di-reboot:
sudo systemctl enable nginxVerifikasi Nginx Berjalan
Konfirmasi layanan aktif dan berjalan:
sudo systemctl status nginxAnda 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 statusNginx 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 -yVerifikasi versi yang diinstal:
openssl versionAnda 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 -yMinta Sertifikat SSL Anda
Ganti your_domain.com dengan nama domain terdaftar aktual Anda:
sudo certbot --nginx -d your_domain.com -d www.your_domain.comCertbot akan:
- Verifikasi kepemilikan domain melalui HTTP challenge
- Mengeluarkan sertifikat dari Let’s Encrypt
- Secara otomatis memodifikasi konfigurasi Nginx Anda untuk menggunakan sertifikat
- 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-runJika 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/defaultJika Anda membuat server block kustom untuk domain Anda (direkomendasikan), buka file itu sebagai gantinya:
sudo nano /etc/nginx/sites-available/your_domain.comPerbarui 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 -tTes yang berhasil menghasilkan:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulJika 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 nginxAlternatifnya, jika Anda lebih suka zero-downtime reload (yang menerapkan perubahan konfigurasi tanpa memutuskan koneksi aktif):
sudo systemctl reload nginxUntuk 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.comCari header response:
HTTP/2 200Jika Anda melihat HTTP/2 200, HTTP/2 bekerja dengan benar.
Metode 2: Menggunakan Perintah OpenSSL
openssl s_client -connect your_domain.com:443 -alpn h2Di output, cari:
ALPN protocol: h2h2 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
- Buka website Anda di Google Chrome atau Mozilla Firefox
- Tekan
F12untuk membuka Developer Tools - Navigasi ke tab Network
- Muat ulang halaman (
F5atauCtrl+R) - Klik kanan pada header kolom apa pun di daftar request dan aktifkan kolom Protocol
- Anda harus melihat
h2terdaftar 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 direktifssl_certificatedanssl_certificate_keysesuai kebutuhan.
Port 443 Tidak Dapat Diakses
- Penyebab: Firewall memblokir traffic HTTPS.
- Perbaikan: Jalankan
sudo ufw allow 443/tcpdan verifikasi dengansudo ufw status.
