Ubuntu / Debian

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) ganti packages/ubuntu dengan packages/mainline/ubuntu di 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 langsung reload tanpa nginx -t terlebih 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. Jadikan nginx -t && nginx -s reload sebagai 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 struktur sites-available/ + sites-enabled/ (warisan konvensi Debian). Repository resmi Nginx hanya menggunakan conf.d/. Keduanya valid — di buku ini kita akan menggunakan conf.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 -t selalu jalankan ini sebelum reload — jika ada syntax error, Nginx menolak reload dan server tetap aman dengan konfigurasi lama.
  • reload bukan restart — gunakan systemctl reload nginx atau nginx -s reload untuk zero-downtime config update.
  • systemctl enable nginx pastikan 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 →

About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact