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 params
include 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 file
fastcgi_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 pages
fastcgi_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 assets
location /build/ {
alias /var/www/app1/public/build/;
access_log off;
expires 1y;
add_header Cache-Control "public, immutable";
}
 
# Laravel router
location / {
try_files $uri $uri/ /index.php?$query_string;
}
 
# PHP handler
location ~ \.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.

 

Tags:
Web Server
Laravel
Nginx
Category : DevOps / Server Author : Didi Irawan