Konfigurasi Nginx untuk Laravel di VPS
January 02, 2026
Artikel ini membahas langkah demi langkah konfigurasi Nginx untuk menjalankan aplikasi Laravel pada sebuah VPS. Contoh kasus yang digunakan adalah satu aplikasi Laravel yang dijalankan pada port tertentu, dengan struktur direktori standar Laravel.
Panduan ini ditujukan untuk kebutuhan server VPS, baik untuk development maupun production ringan, dan ditulis secara umum tanpa mengikat pada versi sistem operasi tertentu.
Gambaran Aplikasi
- Nama aplikasi: App1
- Lokasi aplikasi: /var/www/app1
- Public directory: /var/www/app1/public
- Akses aplikasi: http://IP_SERVER:8001
1. Membuat FastCGI Snippet untuk PHP (Laravel Friendly)
Agar konfigurasi Nginx lebih rapi dan dapat digunakan ulang untuk aplikasi Laravel lainnya, kita akan membuat FastCGI snippet khusus.
Buat file snippet:
sudo nano /etc/nginx/snippets/fastcgi-php.conf
Isi dengan konfigurasi berikut:
# ==============================# FastCGI Snippet for Laravel# ==============================# Standard FastCGI paramsinclude fastcgi_params;# Correct script filename resolution (important for Laravel)fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;fastcgi_param DOCUMENT_ROOT $realpath_root;# Index filefastcgi_index index.php;# =============================# Performance & Stability# =============================# Buffers (prevent "upstream sent too big header")fastcgi_buffer_size 128k;fastcgi_buffers 256 16k;fastcgi_busy_buffers_size 256k;fastcgi_temp_file_write_size 256k;# Timeouts (prevent Gateway Timeout)fastcgi_read_timeout 300;fastcgi_send_timeout 300;# Let Nginx handle error pagesfastcgi_intercept_errors on;
Kenapa snippet ini penting?
- Menghindari error path PHP pada Laravel
- Lebih stabil untuk request besar
- Mudah digunakan kembali untuk banyak aplikasi
2. Konfigurasi Nginx untuk App1 (Port 8001)
Selanjutnya kita buat konfigurasi server block untuk aplikasi Laravel.
Buat file konfigurasi:
sudo nano /etc/nginx/sites-available/app1.conf
Isi konfigurasi berikut:
server {listen 8001;server_name _;root /var/www/app1/public;index index.php index.html;# Vite / build assetslocation /build/ {alias /var/www/app1/public/build/;access_log off;expires 1y;add_header Cache-Control "public, immutable";}# Laravel routerlocation / {try_files $uri $uri/ /index.php?$query_string;}# PHP handlerlocation ~ \.php$ {include snippets/fastcgi-php.conf;fastcgi_pass unix:/run/php/php8.2-fpm.sock;}# Protect hidden files (.env, .git, dll)location ~ /\. {deny all;}}
Catatan penting:
- try_files wajib untuk routing Laravel
- Folder public adalah root utama
- Konfigurasi /build cocok untuk Laravel + Vite
3. Mengaktifkan Konfigurasi Nginx
Aktifkan konfigurasi dengan symbolic link:
sudo ln -s /etc/nginx/sites-available/app1.conf /etc/nginx/sites-enabled/
Jika ada konfigurasi lama dengan port yang sama, pastikan tidak bentrok.
4. Mengatur Permission Laravel
Laravel membutuhkan akses tulis pada folder tertentu agar berjalan normal.
Masuk ke direktori aplikasi:
cd /var/www/app1
Set ownership
sudo chown -R www-data:www-data storage bootstrap/cache
Set permission
sudo chmod -R 775 storage bootstrap/cache
Tanpa permission ini, Laravel biasanya akan error pada:
- Cache
- Log
- Session
5. Test dan Reload Nginx
Sebelum reload, pastikan konfigurasi valid:
sudo nginx -t
Jika tidak ada error, reload Nginx:
sudo systemctl reload nginx
Sekarang aplikasi Laravel sudah dapat diakses melalui: http://IP_SERVER:8001
Penutup
Dengan konfigurasi ini:
- Laravel berjalan optimal di VPS
- Struktur Nginx lebih rapi dan reusable
- Mudah menambah aplikasi lain dengan port berbeda
Konsep yang sama bisa digunakan untuk multi-app Laravel dalam satu server hanya dengan menambah server block baru.
Semoga artikel ini membantu.