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 pengurangan waktu muat halaman yang dramatis.
Panduan komprehensif ini membimbing Anda melalui setiap langkah yang diperlukan untuk menginstal Nginx dengan dukungan HTTP/2 penuh pada 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 Anda pada paket VPS Hosting atau Dedicated Server, tutorial ini berlaku langsung untuk lingkungan Anda.
Apa Itu HTTP/2 dan Mengapa Hal Ini Penting?
HTTP/2 adalah versi utama kedua dari Hypertext Transfer Protocol, yang distandarkan dalam RFC 7540. Dirancang untuk mengatasi keterbatasan kinerja HTTP/1.1, yang telah digunakan sejak 1997.
Keuntungan utama HTTP/2 dibandingkan HTTP/1.1:
| Fitur | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Multiplexing | Satu permintaan per koneksi | Beberapa permintaan simultan |
| Kompresi header | Header teks biasa | Kompresi HPACK |
| Server push | Tidak didukung | Didukung |
| Protokol biner | Berbasis teks | Binary framing |
| Penggunaan ulang koneksi | Terbatas | Sepenuhnya persisten |
| Latensi | Lebih tinggi | Berkurang secara signifikan |
Bagi pemilik situs web, mengaktifkan HTTP/2 diterjemahkan langsung ke dalam pemuatan halaman yang lebih cepat, skor Core Web Vitals yang 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 mana pun. Inilah sebabnya mengapa mendapatkan sertifikat SSL adalah langkah wajib dalam panduan ini. Jika Anda memerlukan sertifikat terpercaya untuk domain Anda, AlexHost menawarkan SSL Certificates untuk semua kasus penggunaan.
Prasyarat
Sebelum Anda memulai, pastikan Anda memiliki hal-hal berikut:
- Server yang menjalankan Ubuntu 20.04 LTS atau Ubuntu 22.04 LTS (langkah-langkahnya hampir identik untuk keduanya)
- Pengguna non-root dengan
sudoprivileges atau akses root langsung - Nama domain terdaftar yang menunjuk ke alamat IP server Anda melalui catatan A
- Port 80 dan 443 terbuka di firewall Anda (UFW atau iptables)
- Keakraban dasar dengan baris perintah Linux
Jika Anda belum memiliki domain, Anda dapat mendaftarnya langsung melalui Pendaftaran Domain AlexHost dan mengarahkannya ke server Anda dalam beberapa menit.
Langkah 1 — Perbarui Indeks Paket Sistem
Selalu mulai dengan menyegarkan indeks paket Anda untuk memastikan Anda menginstal versi terbaru yang tersedia dari semua perangkat lunak:
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
Repository 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 Memulai Secara Otomatis saat Boot
Pastikan Nginx diluncurkan secara otomatis setiap kali server di-reboot:
sudo systemctl enable nginxVerifikasi Nginx Sedang Berjalan
Konfirmasi layanan aktif dan berjalan:
sudo systemctl status nginxAnda seharusnya melihat output serupa 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 lalu lintas 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 akan 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 Anda yang sebenarnya:
sudo certbot --nginx -d your_domain.com -d www.your_domain.comCertbot akan:
- Verifikasi kepemilikan domain melalui tantangan HTTP
- Mengeluarkan sertifikat dari Let’s Encrypt
- Secara otomatis memodifikasi konfigurasi Nginx Anda untuk menggunakan sertifikat
- Menyiapkan pengalihan HTTPS dari HTTP
Ikuti petunjuk interaktif. Ketika ditanya apakah akan mengarahkan ulang lalu lintas HTTP ke HTTPS, pilih opsi 2 (Redirect) — ini adalah pilihan yang direkomendasikan.
Verifikasi Pembaruan Sertifikat Otomatis
Sertifikat Let’s Encrypt berakhir setelah 90 hari. Certbot memasang pekerjaan cron atau timer systemd untuk memperbarui secara otomatis. Uji proses pembaruan dengan dry run:
sudo certbot renew --dry-runJika tidak ada kesalahan yang muncul, pembaruan otomatis dikonfigurasi dengan benar.
> Tip: Untuk lingkungan produksi dengan beberapa domain atau sertifikat wildcard, pertimbangkan Dedicated Server untuk kontrol penuh atas infrastruktur SSL Anda.
Langkah 5 — Konfigurasi Nginx untuk HTTP/2
Sekarang SSL sudah terpasang, Anda perlu secara eksplisit mengaktifkan HTTP/2 dalam konfigurasi blok server Nginx.
Buka File Konfigurasi Nginx
Konfigurasi situs default terletak di:
sudo nano /etc/nginx/sites-available/defaultJika Anda membuat blok server khusus untuk domain Anda (direkomendasikan), buka file tersebut sebagai gantinya:
sudo nano /etc/nginx/sites-available/your_domain.comPerbarui Blok Server untuk Mengaktifkan HTTP/2
Temukan 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 penting ada di baris listen: menambahkan http2 setelah ssl mengaktifkan protokol HTTP/2 untuk host virtual tersebut.
Simpan dan Keluar
Tekan CTRL + X, kemudian Y, kemudian Enter untuk menyimpan file dan keluar dari editor nano.
Langkah 6 — Optimalkan Konfigurasi Nginx HTTP/2 Anda
Sekadar mengaktifkan HTTP/2 adalah awal yang baik, tetapi menerapkan optimasi tambahan memastikan Anda mendapatkan 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 kompresi header HPACK miliknya 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 kesalahan sintaks. File yang salah konfigurasi dapat mematikan seluruh web server Anda.
Jalankan tes konfigurasi bawaan:
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 kesalahan apa pun, tinjau output dengan cermat. Pesan kesalahan akan mencakup nama file dan nomor baris tempat masalah terdeteksi.
Langkah 8 — Restart Nginx dan Terapkan Perubahan
Setelah tes konfigurasi berhasil, restart Nginx untuk menerapkan semua perubahan:
sudo systemctl restart nginxAlternatifnya, jika Anda lebih suka reload tanpa downtime (yang menerapkan perubahan konfigurasi tanpa memutuskan koneksi aktif):
sudo systemctl reload nginxUntuk enablement HTTP/2 secara khusus, restart penuh direkomendasikan untuk memastikan pengaturan protokol baru sepenuhnya diinisialisasi.
Langkah 9 — Verifikasi HTTP/2 Aktif
Setelah memulai ulang Nginx, konfirmasi bahwa HTTP/2 benar-benar dilayani kepada klien menggunakan salah satu metode berikut.
Metode 1: Menggunakan curl
Alat baris perintah curl dapat melaporkan versi protokol yang digunakan:
curl -I --http2 https://your_domain.comCari header respons:
HTTP/2 200Jika Anda melihat HTTP/2 200, HTTP/2 berfungsi dengan benar.
Metode 2: Menggunakan Perintah OpenSSL
openssl s_client -connect your_domain.com:443 -alpn h2Dalam output, cari:
ALPN protocol: h2h2 adalah pengenal ALPN untuk HTTP/2. Jika Anda melihat ini, server Anda dengan benar mengiklankan dukungan HTTP/2 selama jabat tangan TLS.
Metode 3: Menggunakan Alat Developer Browser
- Buka situs web Anda di Google Chrome atau Mozilla Firefox
- Tekan
F12untuk membuka Alat Developer - Navigasikan ke tab Network
- Muat ulang halaman (
F5atauCtrl+R) - Klik kanan pada header kolom apa pun dalam daftar permintaan dan aktifkan kolom Protocol
- Anda harus melihat
h2terdaftar sebagai protokol untuk permintaan domain Anda
Metode 4: Menggunakan Alat Pengujian HTTP/2 Online
Kunjungi https://tools.keycdn.com/http2-test dan masukkan domain Anda. Alat ini akan mengkonfirmasi apakah HTTP/2 aktif dan memberikan detail tambahan tentang konfigurasi TLS server Anda.
Pemecahan Masalah Umum
HTTP/2 Tidak Muncul di Browser Meskipun Sudah Dikonfigurasi
- Penyebab: Browser menyimpan cache koneksi HTTP/1.1 yang lebih lama.
- Solusi: Hapus cache dan cookie browser, atau uji di jendela private/incognito.
nginx -t Mengembalikan Kesalahan Sertifikat SSL
- Penyebab: Jalur sertifikat tidak benar dalam file konfigurasi.
- Solusi: Verifikasi jalur 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 lalu lintas HTTPS.
- Solusi: Jalankan
sudo ufw allow 443/tcpdan verifikasi dengansudo ufw status.
Certbot Gagal Validasi Domain
- Penyebab: Catatan DNS A belum tersebar, atau port 80 diblokir.
- Solusi: Verifikasi domain Anda mengarah ke IP yang benar menggunakan
dig your_domain.com A. Pastikan port 80 terbuka untuk tantangan ACME HTTP.
unknown directive "http2" Error di Nginx
- Penyebab: Versi Nginx terlalu lama (sebelum 1.9.5) atau dikompilasi tanpa dukungan HTTP/2.
- Solusi: Tingkatkan Nginx. Di Ubuntu 20.04+, versi repositori default mendukung HTTP/2. Anda juga dapat menambahkan PPA Nginx resmi:
sudo add-apt-repository ppa:nginx/stable && sudo apt update && sudo apt upgrade nginx.
Kesimpulan
Anda telah berhasil menginstal Nginx dengan dukungan HTTP/2 penuh di Ubuntu. Berikut adalah ringkasan semua yang telah dicapai:
- ✅ Menginstal dan mengaktifkan Nginx sebagai layanan sistem
- ✅ Memperoleh sertifikat SSL gratis yang diperbaharui secara otomatis melalui Let’s Encrypt dan Certbot
- ✅ Mengonfigurasi blok server Nginx dengan direktif
http2 - ✅ Menerapkan pengerasan TLS, OCSP stapling, HSTS, dan kompresi Gzip
- ✅ Menguji konfigurasi dan memverifikasi HTTP/2 aktif
Mengaktifkan HTTP/2 adalah salah satu optimasi dengan dampak tertinggi dan usaha terendah yang dapat Anda lakukan pada server web. Dikombinasikan dengan pengaturan TLS yang kuat dan header caching yang tepat, ini secara signifikan meningkatkan waktu muat halaman, skor Core Web Vitals, dan pada akhirnya peringkat mesin pencari situs Anda.
Jaga stack Anda tetap terkini: Jalankan sudo apt update && sudo apt upgrade secara teratur untuk menjaga Nginx, OpenSSL, dan Certbot tetap terbaru dengan patch keamanan terbaru.
Tingkatkan Performa Server Anda Lebih Jauh
Keuntungan performa dari HTTP/2 paling terasa pada infrastruktur yang cepat dan andal. Jika Anda saat ini menggunakan shared hosting dan mencapai batas sumber daya, pertimbangkan untuk upgrade ke paket VPS Hosting untuk sumber daya khusus dan akses root penuh. Untuk aplikasi dengan traffic tinggi, Dedicated Servers menawarkan performa mentah yang tak tertandingi. Anda juga dapat mengelola lingkungan server dengan mudah menggunakan VPS dengan cPanel jika Anda lebih suka antarmuka grafis daripada baris perintah.
Apa pun kebutuhan infrastruktur Anda, AlexHost menyediakan platform untuk menjalankan Nginx, HTTP/2, dan seluruh stack web Anda dengan efisiensi puncak.
untuk semua layanan hosting