Nginx Reverse Proxy: Panduan Konfigurasi & Optimalisasi Server 2026 | Ilmu Komputer

Illustrasi Nginx Reverse Proxy

Apa itu Nginx Reverse Proxy?

Nginx adalah web server dan reverse proxy server yang sangat populer, digunakan oleh lebih dari 30% website di dunia. Sebagai reverse proxy, Nginx menerima request dari klien dan meneruskannya ke backend server (Apache, Node.js, Python, dll) tanpa mengekspos backend langsung ke internet.

Kenapa Perlu Reverse Proxy?

  • Load Balancing — Distribusi traffic ke beberapa backend server.
  • SSL Termination — Tangani HTTPS di Nginx, backend cukup HTTP.
  • Caching — Cache konten statis untuk mengurangi beban backend.
  • Security — Backend tersembunyi dari akses langsung internet.
  • Multiple Apps via Same Port — Satu port 80/443 bisa serve banyak aplikasi via server_name.

Instalasi Nginx

# Ubuntu/Debian
sudo apt update
sudo apt install nginx -y

# Verifikasi
sudo nginx -t
sudo systemctl status nginx

Konfigurasi Reverse Proxy Dasar

server {
    listen 80;
    server_name app.cahyo.web.id;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Load Balancing dengan Nginx

upstream backend_app {
    least_conn;  # Kirim ke server dengan koneksi paling sedikit
    server 10.0.0.1:3000 weight=3;  # Bobot lebih tinggi
    server 10.0.0.2:3000 weight=1;
    server 10.0.0.3:3000 backup;    # Hanya aktif jika primary down
}

server {
    listen 80;
    server_name api.cahyo.web.id;

    location / {
        proxy_pass http://backend_app;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
    }
}

SSL Termination (HTTPS)

server {
    listen 443 ssl http2;
    server_name secure.cahyo.web.id;

    ssl_certificate /etc/letsencrypt/live/cahyo.web.id/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/cahyo.web.id/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header X-Forwarded-Proto https;
    }
}

# Redirect HTTP ke HTTPS
server {
    listen 80;
    server_name secure.cahyo.web.id;
    return 301 https://$server_name$request_uri;
}

Caching Static Content

location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2?)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
    proxy_pass http://127.0.0.1:3000;
}

Optimalisasi Performa

  • worker_processes auto; — Otomatis sesuai jumlah CPU.
  • proxy_buffering on; — Buffer respons backend.
  • gzip on; — Kompresi respons.
  • client_max_body_size 100M; — Sesuaikan dengan kebutuhan upload.
  • keepalive_timeout 65; — Koneksi persisten.

Troubleshooting Umum

  • 502 Bad Gateway — Backend tidak berjalan atau port salah.
  • 404 Not Found — Cek proxy_pass path (jangan lupa trailing slash untuk root).
  • 413 Request Entity Too Large — Naikkan client_max_body_size.
  • SSL Error — Cek path certificate, pastikan tidak expired.

Kesimpulan

Nginx sebagai reverse proxy adalah komponen essential dalam arsitektur server modern. Dengan konfigurasi yang tepat, Nginx bisa menangani ribuan koneksi simultan dengan resource minimal. Mulai dari load balancing, SSL termination, hingga caching — semuanya bisa dilakukan dalam satu file konfigurasi.

Iklan

Iklan
Iklan

Iklan
Iklan

Iklan
Iklan