Nginx Load Balancing di Proxmox Server
Konfigurasi Load Balancing Nginx di lingkungan Proxmox VE (Virtual Environment) pada dasarnya adalah konfigurasi Nginx standar di sistem operasi Linux yang berjalan di salah satu Mesin Virtual (VM) atau Container di Proxmox, yang kemudian mengarahkan traffic ke beberapa VM/Container web server backend lainnya.
Berikut adalah langkah-langkah umum untuk mengkonfigurasi Nginx sebagai load balancer:
1. Persiapan Server Backend (di Proxmox)
Pastikan Anda memiliki minimal dua (atau lebih) server web (VM atau Container) di Proxmox yang menjalankan aplikasi atau konten web yang sama. Catat Alamat IP dan Port dari setiap server backend ini (misalnya, 192.168.1.10:80 dan 192.168.1.11:80).
2. Instalasi Nginx (di VM/Container Load Balancer)
Buat satu VM/Container baru di Proxmox yang akan bertindak sebagai Load Balancer. Instal Nginx di dalamnya. Untuk distribusi berbasis Debian/Ubuntu, gunakan perintah:
sudo apt update
sudo apt install nginx -y
3. Konfigurasi Nginx Load Balancing
Akses file konfigurasi utama Nginx. Lokasi umumnya adalah /etc/nginx/nginx.conf atau Anda dapat membuat file konfigurasi terpisah di /etc/nginx/conf.d/ (misalnya, loadbalancer.conf).
A. Tambahkan Blok upstream
Di dalam blok http { ... } pada file konfigurasi Nginx, tambahkan blok upstream untuk mendefinisikan kelompok server backend:
http {
    # ... konfigurasi http lainnya
    upstream backend_servers {
        # Metode default: Round Robin (permintaan didistribusikan bergantian)
        server 192.168.1.10:80;  # IP dan Port Server Backend 1
        server 192.168.1.11:80;  # IP dan Port Server Backend 2
        # Tambahkan server lain jika ada
        # Contoh metode lain (pilih salah satu, atau biarkan default Round Robin):
        # least_conn;  # Least Connections: kirim ke server dengan koneksi paling sedikit
        # ip_hash;     # IP Hash: pastikan permintaan dari IP klien yang sama selalu ke server yang sama
    }
    # ... konfigurasi http lainnya
}
B. Konfigurasi Blok server untuk Reverse Proxy
Kemudian, di dalam blok server { ... }, atur Nginx untuk meneruskan (proxy) permintaan ke kelompok upstream yang baru Anda definisikan:
server {
    listen 80;
    server_name your_domain.com; # Ganti dengan nama domain atau IP Load Balancer Anda
    location / {
        proxy_pass http://backend_servers;
        
        # Header yang penting untuk meneruskan informasi klien yang sebenarnya
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
        # Tambahan jika menggunakan websockets (misalnya untuk Proxmox VNC)
        # proxy_http_version 1.1;
        # proxy_set_header Upgrade $http_upgrade;
        # proxy_set_header Connection "upgrade";
    }
}
4. Uji dan Terapkan Konfigurasi
- Uji Konfigurasi: Bash- sudo nginx -t- Pastikan tidak ada kesalahan ( - syntax is ok,- test is successful).
- Restart/Reload Nginx: Bash- sudo systemctl restart nginx # atau sudo systemctl reload nginx
- Akses alamat IP atau domain dari Nginx Load Balancer Anda di browser. Permintaan seharusnya didistribusikan ke server backend yang berbeda sesuai dengan metode load balancing yang Anda pilih (defaultnya Round Robin). 
| Metode Load Balancing | Deskripsi | 
| Round Robin (Default) | Permintaan didistribusikan secara berurutan dan bergantian ke setiap server. | 
| Least Connections | Permintaan dikirim ke server yang memiliki koneksi aktif paling sedikit. | 
| IP Hash | Menggunakan alamat IP klien untuk menentukan server, memastikan klien yang sama selalu diarahkan ke server yang sama (berguna untuk session persistence). | 
Anda dapat melihat lebih lanjut tentang cara Nginx dapat berfungsi sebagai load balancer di Linux. 
 
