Cara Setting Proxy Timeout Nginx: Solusi Error Gateway

Mengatur timeout pada Nginx reverse proxy sangat penting untuk mencegah terjadinya error 504 Gateway Time-out saat server backend membutuhkan waktu lebih lama dalam memproses permintaan (request) dari klien. Parameter utama yang perlu dikonfigurasi meliputi proxy_connect_timeout, proxy_send_timeout, dan proxy_read_timeout yang dapat diterapkan di dalam blok http, server, atau location.

Parameter Utama Proxy Timeout Nginx

Terdapat tiga direktif esensial dalam modul ngx_http_proxy_module yang mengatur durasi waktu koneksi antara Nginx dan server upstream (backend):

Direktif Default Fungsi Utama
proxy_connect_timeout 60s Mengatur batas waktu untuk membangun koneksi dengan server upstream (backend).
proxy_send_timeout 60s Mengatur batas waktu pengiriman permintaan ke server upstream.
proxy_read_timeout 60s Mengatur batas waktu menunggu respons dari server upstream.

Langkah Konfigurasi Proxy Timeout

Untuk mengubah nilai timeout, buka file konfigurasi Nginx Anda (biasanya terletak di /etc/nginx/nginx.conf atau di dalam direktori /etc/nginx/sites-available/ untuk virtual host tertentu). Tambahkan direktif timeout sesuai kebutuhan durasi proses aplikasi Anda.

http {
    # Mengatur timeout global untuk semua server
    proxy_connect_timeout 90s;
    proxy_send_timeout 300s;
    proxy_read_timeout 300s;

    server {
        listen 80;
        server_name contoh.com;

        location / {
            proxy_pass http://localhost:3000;
            # Atau atur secara spesifik per location
            proxy_connect_timeout 60s;
            proxy_send_timeout 600s;
            proxy_read_timeout 600s;
        }
    }
}

Troubleshooting dan Validasi Konfigurasi

Setelah melakukan perubahan pada file konfigurasi Nginx, selalu lakukan pengujian sintaks terlebih dahulu untuk menghindari kegagalan layanan:

sudo nginx -t

Jika hasil pengujian menunjukkan pesan syntax is ok dan test is successful, muat ulang (reload) layanan Nginx untuk menerapkan pengaturan baru:

sudo systemctl reload nginx

Catatan Lapangan

Peningkatan nilai proxy_read_timeout sangat berguna untuk proses unggah (upload) file berukuran besar, eksekusi kueri database yang kompleks, atau pembuatan laporan panjang (PDF generation). Namun, pastikan juga untuk menyesuaikan konfigurasi serupa pada aplikasi backend (seperti PHP-FPM, Node.js, atau Uvicorn/Gunicorn) agar tidak terjadi pemutusan koneksi sepihak dari sisi aplikasi.