Menghubungkan Domain ke IP VPS: Studi Kasus Laravel

January 15, 2026


Menghubungkan domain ke VPS adalah langkah penting agar aplikasi yang berjalan di server bisa diakses dengan nama domain yang profesional dan mudah diingat. Pada artikel ini, kita akan membahas cara menghubungkan domain ke IP VPS dengan studi kasus server menggunakan Nginx, di mana aplikasi Laravel berjalan di port lokal VPS 8001.
Artikel ini ditulis secara praktis dan bertahap, sehingga cocok untuk developer maupun sysadmin pemula yang sedang melakukan deployment aplikasi ke VPS.


Gambaran Studi Kasus
Sebagai gambaran, kita menggunakan setup berikut:

  • VPS: Server Linux (tanpa spesifik distro)
  • Web Server: Nginx
  • Aplikasi: Laravel
  • Port aplikasi Laravel: 8001
  • Domain: contoh-domain.com
  • IP VPS: 123.123.123.123 (contoh)

Tujuan akhir:
Akses https://contoh-domain.com → otomatis diarahkan ke aplikasi Laravel yang berjalan di VPS dengan port 8001.


1. Arahkan Domain ke IP VPS (DNS Setup)
Langkah pertama selalu dimulai dari DNS domain.
Masuk ke DNS Manager (bisa dari registrar domain atau layanan DNS seperti Cloudflare), lalu buat record:

Type Name Value TTL
A @ 123.123.123.123 Auto
A www 123.123.123.123 Auto

Perubahan DNS biasanya membutuhkan waktu propagasi beberapa menit hingga beberapa jam.
Untuk memastikan domain sudah mengarah ke VPS, jalankan:

ping contoh-domain.com

Jika IP yang muncul adalah IP VPS, berarti DNS sudah benar.


2. Pastikan Laravel Berjalan di Port 8001
Sebelum domain diarahkan melalui Nginx, pastikan aplikasi Laravel sudah berjalan dengan benar di VPS. Pada studi kasus ini, Laravel berjalan di port 8001.
Jika kamu masih berada pada tahap awal setup server dan web server, sangat disarankan untuk mengonfigurasi Nginx + PHP + Laravel terlebih dahulu agar aplikasi bisa berjalan stabil di VPS.

Konfigurasi Nginx untuk Laravel di VPS:
https://di2-irawan.my.id/blog/konfigurasi-nginx-untuk-laravel-di-vps

Artikel tersebut membahas secara detail mulai dari:

  • Konfigurasi PHP di Nginx
  • Konfigurasi server block Laravel
  • Pengaturan permission folder (storage dan bootstrap/cache)
  • Testing Nginx + PHP-FPM

Setelah konfigurasi dasar Laravel di VPS selesai, pastikan aplikasi berjalan di port 8001. Contoh jika menggunakan built-in server Laravel:

php artisan serve --host=127.0.0.1 --port=8001

Atau jika menggunakan Supervisor / Docker / PHP-FPM custom, pastikan service tersebut mengarah ke port yang sama dan statusnya aktif.

Untuk memastikan port 8001 benar-benar listening, jalankan:

ss -tulpn | grep 8001

Jika port aktif dan aplikasi bisa diakses via http://127.0.0.1:8001, maka kita siap melanjutkan ke tahap konfigurasi Nginx sebagai reverse proxy.


3. Konsep Reverse Proxy di Nginx
Karena Laravel berjalan di port 8001, sedangkan domain diakses lewat port 80 / 443, maka kita menggunakan reverse proxy. 
Alurnya :

User → Domain (80/443) → Nginx → localhost:8001 → Laravel

Nginx akan bertugas sebagai:

  • Penerima request dari internet
  • Pengaman (SSL, firewall, dll)
  • Penghubung ke aplikasi Laravel

4. Konfigurasi Server Block Nginx
Buat file konfigurasi baru:

sudo nano /etc/nginx/sites-available/contoh-domain.com

Isi dengan konfigurasi berikut:

server {
     listen 80;
     server_name contoh-domain.com www.contoh-domain.com;

     location / {
          proxy_pass http://127.0.0.1:8001;
          proxy_http_version 1.1;
          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;
     }

Aktifkan konfigurasi:

sudo ln -s /etc/nginx/sites-available/contoh-domain.com \
     /etc/nginx/sites-enabled/

Lalu cek dan reload Nginx:

sudo nginx -t 
sudo systemctl reload nginx

Sekarang, domain sudah bisa mengakses aplikasi Laravel di port 8001.


5. (Opsional) Aktifkan HTTPS dengan SSL
Agar website lebih aman dan dipercaya browser, sangat disarankan untuk mengaktifkan HTTPS (SSL).

Install Certbot (jika belum ada)
Jika Certbot belum terpasang di VPS, install terlebih dahulu:

sudo apt update
sudo apt install certbot python3-certbot-nginx -y

Pastikan instalasi berhasil dengan mengecek versi:

certbot --version

Generate SSL dan Integrasi ke Nginx
Setelah Certbot terpasang, jalankan perintah berikut:

sudo certbot --nginx -d contoh-domain.com -d www.contoh-domain.com

Certbot akan:

  • Menghasilkan sertifikat SSL
  • Mengonfigurasi Nginx secara otomatis
  • (Opsional) Mengatur redirect HTTP → HTTPS

Jika proses berhasil, konfigurasi Nginx akan diperbarui otomatis dan kamu bisa langsung mengakses: https://contoh-domain.com

Auto-Renew SSL
Sertifikat Let’s Encrypt berlaku 90 hari. Certbot sudah menyediakan auto-renew.
Cek status auto-renew:

sudo certbot renew --dry-run

Jika tidak ada error, maka SSL akan diperpanjang otomatis oleh sistem.


6. Cek Firewall VPS
Pastikan port berikut terbuka:

  • 80 → HTTP
  • 443 → HTTPS

Contoh (jika menggunakan UFW):

sudo ufw allow 80
sudo ufw allow 443
sudo ufw reload

Port 8001 tidak perlu dibuka ke publik, karena hanya diakses oleh Nginx secara lokal.


7. (Opsional) Troubleshooting: Form is not secure
Jika domain sudah bisa di akses, akan tetapi muncul error "Form is not secure" ketika submit data atau masuk ke page lain, lakukan langkah berikut.

Buat Middleware TrustProxies
app/Http/Middleware/TrustProxies.php

<?php
namespace App\Http\Middleware;

use Illuminate\Http\Request;
use Illuminate\Http\Middleware\TrustProxies as Middleware;

class TrustProxies extends Middleware {
     protected $proxies = '*';
     protected $headers = Request::HEADER_X_FORWARDED_FOR |
          Request::HEADER_X_FORWARDED_HOST |
          Request::HEADER_X_FORWARDED_PORT |
          Request::HEADER_X_FORWARDED_PROTO;

Register di bootstrap/app.php

$middleware->append(\App\Http\Middleware\TrustProxies::class);

Force HTTPS
app/Providers/AppServiceProvider.php

use Illuminate\Support\Facades\URL;

public function boot(): void
{
     if (app()->environment('production')) {
          URL::forceScheme('https');
     }

Pastikan .env

APP_ENV=production
APP_URL=https://contoh-domain.com
SESSION_SECURE_COOKIE=true


8. Hasil Akhir
Dengan konfigurasi ini:

  • Domain mengarah ke IP VPS
  • Nginx menerima request dari internet
  • Laravel tetap berjalan aman di port internal 8001
  • Aplikasi bisa diakses via domain tanpa port

Contoh akses: https://contoh-domain.com


Penutup
Menghubungkan domain ke VPS dengan Nginx bukan hanya soal DNS, tetapi juga tentang arsitektur yang aman dan rapi. Dengan pendekatan reverse proxy seperti ini, kamu bisa:

  • Menjalankan banyak aplikasi di port berbeda
  • Mengelola SSL di satu titik (Nginx)
  • Menjaga aplikasi internal tetap tidak terekspos publik
Tags:
Web Server
Laravel
Category : DevOps / Server Author : Didi Irawan