Instalasi Nginx di Ubuntu / Debian #
Ubuntu dan Debian adalah distribusi Linux yang paling umum digunakan untuk server web, dan keduanya menggunakan package manager apt yang sama. Ada dua cara menginstal Nginx di sini: dari repository bawaan distro, atau dari repository resmi Nginx. Keduanya valid — perbedaannya hanya di versi yang kamu dapat.
Dari Repository Distro vs Repository Resmi Nginx #
Sebelum mulai, penting untuk tahu perbedaan ini karena berdampak pada versi yang kamu install.
Repository bawaan Ubuntu/Debian biasanya menyediakan versi Nginx yang sedikit lebih lama — stabil dan sudah diuji kompatibilitasnya dengan sistem, tapi bukan yang terbaru. Misalnya, Ubuntu 22.04 menyediakan Nginx 1.18, sementara versi stable terbaru Nginx sudah di 1.24+.
Repository resmi Nginx (nginx.org/packages) selalu menyediakan versi stable atau mainline terbaru. Disarankan jika kamu butuh fitur-fitur dari versi yang lebih baru, atau ingin konsistensi versi antar server.
Pilih repository distro jika:
✓ Tidak butuh fitur dari versi terbaru
✓ Prioritas stabilitas jangka panjang
✓ Setup cepat tanpa tambah repo
Pilih repository resmi Nginx jika:
✓ Butuh versi terbaru (HTTP/3, fitur baru)
✓ Konsistensi versi antar banyak server
✓ Ingin update lebih cepat
Instalasi dari Repository Distro (Cara Cepat) #
Ini cara tercepat. Cocok untuk eksperimen dan sebagian besar kasus production yang tidak butuh versi terbaru.
# Update daftar package
sudo apt update
# Install Nginx
sudo apt install nginx -y
# Verifikasi instalasi
nginx -v
# nginx version: nginx/1.18.0 (Ubuntu)
Selesai. Nginx sudah terinstal dan biasanya langsung berjalan otomatis.
Instalasi dari Repository Resmi Nginx #
Cara ini memberikan versi stable terbaru dari Nginx langsung dari nginx.org.
# 1. Install dependency yang dibutuhkan
sudo apt install -y curl gnupg2 ca-certificates lsb-release ubuntu-keyring
# 2. Import signing key resmi Nginx
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
# 3. Verifikasi key yang didownload
gpg --dry-run --quiet --no-keyring \
--import --import-options import-show \
/usr/share/keyrings/nginx-archive-keyring.gpg
# Pastikan fingerprint yang muncul:
# 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62
# 4. Tambahkan repository Nginx stable
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu $(lsb_release -cs) nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
# Untuk Debian, ganti 'ubuntu' dengan 'debian':
# http://nginx.org/packages/debian $(lsb_release -cs) nginx
# 5. Set prioritas agar repository Nginx lebih diutamakan
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
| sudo tee /etc/apt/preferences.d/99nginx
# 6. Update dan install
sudo apt update
sudo apt install nginx -y
# Verifikasi — sekarang versi lebih baru
nginx -v
# nginx version: nginx/1.24.0
Untuk menggunakan mainline branch (versi dengan fitur paling baru, tapi lebih sering update) gantipackages/ubuntudenganpackages/mainline/ubuntudi langkah 4.
Memulai, Menghentikan, dan Mereload Nginx #
Nginx di Ubuntu/Debian dikelola via systemctl:
# Cek status Nginx
sudo systemctl status nginx
# Start Nginx (jika belum berjalan)
sudo systemctl start nginx
# Stop Nginx
sudo systemctl stop nginx
# Restart Nginx (stop + start — ada downtime singkat)
sudo systemctl restart nginx
# Reload konfigurasi tanpa downtime (cara yang disarankan)
sudo systemctl reload nginx
# atau equivalen:
sudo nginx -s reload
# Aktifkan agar Nginx otomatis start saat server reboot
sudo systemctl enable nginx
# Nonaktifkan autostart
sudo systemctl disable nginx
Perbedaan restart dan reload penting: restart menghentikan Nginx lalu menjalankannya kembali — ada jeda singkat di mana semua koneksi diputus. reload mengirim signal ke master process untuk membaca konfigurasi baru sambil worker lama menyelesaikan koneksi yang sedang berjalan — zero downtime.
# Selalu test konfigurasi sebelum reload!
sudo nginx -t
# nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
# nginx: configuration file /etc/nginx/nginx.conf test is successful
# Baru reload jika test berhasil
sudo nginx -s reload
Jangan pernah langsungreloadtanpanginx -tterlebih dahulu. Jika konfigurasi baru ada syntax error, Nginx akan menolak reload dan server tetap berjalan dengan konfigurasi lama — tapi kamu tidak akan tahu sampai kamu cek. Jadikannginx -t && nginx -s reloadsebagai kebiasaan.
Struktur Direktori Setelah Instalasi #
Setelah instalasi, ini direktori dan file yang perlu kamu ketahui:
/etc/nginx/
├── nginx.conf # File konfigurasi utama
├── conf.d/ # Konfigurasi tambahan, semua *.conf di-include otomatis
│ └── default.conf # Virtual host default
├── sites-available/ # (Ubuntu) Virtual host yang tersedia (belum aktif)
├── sites-enabled/ # (Ubuntu) Symlink ke sites-available yang aktif
├── mime.types # Mapping ekstensi file → MIME type
├── fastcgi_params # Parameter default untuk FastCGI (PHP)
├── proxy_params # Parameter default untuk proxy
├── snippets/ # Konfigurasi yang bisa di-include di tempat lain
│ └── fastcgi-php.conf
└── modules-enabled/ # Symlink ke modul yang diaktifkan
/var/log/nginx/
├── access.log # Log semua request yang masuk
└── error.log # Log error dan warning
/var/www/html/
└── index.html # Halaman default Nginx (untuk verifikasi instalasi)
/usr/sbin/nginx # Binary Nginx
/var/cache/nginx/ # Direktori cache (jika dikonfigurasi)
Ada perbedaan kecil antara instalasi dari repository distro Ubuntu dan repository resmi Nginx. Repository distro menggunakan struktursites-available/+sites-enabled/(warisan konvensi Debian). Repository resmi Nginx hanya menggunakanconf.d/. Keduanya valid — di buku ini kita akan menggunakanconf.d/untuk konsistensi.
Verifikasi Instalasi #
Setelah instalasi, buka browser dan akses IP server atau http://localhost jika kamu di lokal. Kamu seharusnya melihat halaman “Welcome to nginx!”.
Dari terminal:
# Cek Nginx berjalan dan listen di port berapa
sudo ss -tlnp | grep nginx
# atau
sudo netstat -tlnp | grep nginx
# Output contoh:
# tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx: master
# Test dengan curl
curl -I http://localhost
# HTTP/1.1 200 OK
# Server: nginx/1.24.0
# ...
# Lihat proses Nginx yang berjalan
ps aux | grep nginx
# root 1234 nginx: master process /usr/sbin/nginx
# www-data 1235 nginx: worker process
# www-data 1236 nginx: worker process
Firewall: Mengizinkan Trafik HTTP dan HTTPS #
Jika server menggunakan UFW (Uncomplicated Firewall), kamu perlu mengizinkan port 80 dan 443:
# Lihat profil aplikasi yang tersedia
sudo ufw app list
# Available applications:
# Nginx Full (port 80 + 443)
# Nginx HTTP (port 80 saja)
# Nginx HTTPS (port 443 saja)
# OpenSSH
# Izinkan HTTP dan HTTPS (paling umum)
sudo ufw allow 'Nginx Full'
# Verifikasi
sudo ufw status
# Status: active
# To Action From
# -- ------ ----
# OpenSSH ALLOW Anywhere
# Nginx Full ALLOW Anywhere
Ringkasan #
- Repository distro (
apt install nginx) lebih mudah tapi versi lebih lama. Repository resmi Nginx memberikan versi stable terbaru.nginx -tselalu jalankan ini sebelum reload — jika ada syntax error, Nginx menolak reload dan server tetap aman dengan konfigurasi lama.reloadbukanrestart— gunakansystemctl reload nginxataunginx -s reloaduntuk zero-downtime config update.systemctl enable nginxpastikan Nginx otomatis start setelah server reboot.- Struktur direktori penting:
/etc/nginx/untuk konfigurasi,/var/log/nginx/untuk log,/var/www/html/untuk file default.
← Sebelumnya: Arsitektur Event-Driven Berikutnya: CentOS / RHEL →