Nginx sebagai Reverse Proxy: Konfigurasi yang Wajib Kamu Tahu

Nginx bukan hanya web server — sebagai reverse proxy, ia adalah lapisan penting antara internet dan aplikasimu. Ini konfigurasi praktis yang langsung bisa dipakai.
Nginx sebagai Reverse Proxy: Konfigurasi yang Wajib Kamu Tahu

Kenapa Nginx sebagai Reverse Proxy?

Reverse proxy menempatkan Nginx di depan server aplikasi kamu (Node.js, Laravel, dll). Keuntungannya: SSL termination di satu titik, load balancing, caching static assets, dan proteksi tambahan karena server aplikasi tidak terekspos langsung ke internet.

Instalasi di Ubuntu

sudo apt update && sudo apt install nginx -y
sudo systemctl enable --now nginx

Konfigurasi Dasar Reverse Proxy

# /etc/nginx/sites-available/khalimzone.com

server {
    listen 80;
    server_name khalimzone.com www.khalimzone.com;

    location / {
        proxy_pass         http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection "upgrade";
        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;
        proxy_cache_bypass $http_upgrade;
    }
}
sudo ln -s /etc/nginx/sites-available/khalimzone.com /etc/nginx/sites-enabled/
sudo nginx -t  # test konfigurasi
sudo systemctl reload nginx

SSL dengan Certbot (Gratis)

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d khalimzone.com -d www.khalimzone.com

Certbot otomatis mengupdate konfigurasi Nginx untuk HTTPS dan mengatur auto-renewal certificate.

Optimasi Performa Penting

# Di dalam server block
gzip on;
gzip_types text/plain text/css application/json application/javascript;
gzip_min_length 1000;

# Cache static assets
location ~* .(jpg|jpeg|png|gif|ico|css|js|woff2)$ {
    expires 1y;
    add_header Cache-Control "public, immutable";
}

# Batas ukuran upload
client_max_body_size 10M;

Rate Limiting Sederhana

# Di blok http {}
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;

# Di location block API
location /api/ {
    limit_req zone=api burst=20 nodelay;
    proxy_pass http://localhost:3000;
}

Load Balancing untuk Multiple Instance

upstream app_servers {
    least_conn;
    server localhost:3000;
    server localhost:3001;
    server localhost:3002;
}

server {
    location / {
        proxy_pass http://app_servers;
    }
}

Butuh Solusi Digital Custom?

Kami siap membuatkan solusi digital sesuai kebutuhan bisnis Anda.

Konsultasi Gratis