Mengapa Menggabungkan FastAPI dan Nginx Proxy Manager?
FastAPI dikenal sebagai salah satu framework web Python tercepat berkat dukungan asynchronous native melalui ASGI (Asynchronous Server Gateway Interface) dan Uvicorn. Namun, menjalankan aplikasi FastAPI langsung di server produksi membutuhkan layer reverse proxy yang aman, stabil, dan mudah dikelola.
Di sinilah Nginx Proxy Manager (NPM) menjadi solusi ideal. Nginx Proxy Manager menyediakan antarmuka web modern untuk mengelola virtual host Nginx, perutean subpath, manajemen sertifikat SSL Let's Encrypt otomatis, serta perlindungan header HTTP keamanan.
Dalam panduan ini, kita akan membahas arsitektur produksi lengkap dari pembuatan service Systemd hingga konfigurasi reverse proxy Nginx yang optimal untuk crawler mesin pencari.
Langkah 1: Persiapan Environment Python di Ubuntu 24.04
Pastikan paket python3-venv dan python3-pip telah terpasang di sistem operasi Ubuntu Anda:
sudo apt update && sudo apt install -y python3-venv python3-pip
mkdir -p /var/www/my-fastapi-app
cd /var/www/my-fastapi-app
python3 -m venv venv
./venv/bin/pip install --upgrade pip fastapi uvicorn jinja2
Langkah 2: Membuat Service Systemd untuk Uvicorn
Agar aplikasi FastAPI berjalan stabil di background dan otomatis melakukan restart jika server reboot, buat unit file systemd:
# /etc/systemd/system/fastapi-app.service
[Unit]
Description=FastAPI Uvicorn Application
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/var/www/my-fastapi-app
ExecStart=/var/www/my-fastapi-app/venv/bin/uvicorn main:app --host 127.0.0.1 --port 8092 --workers 2
Restart=always
RestartSec=3
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target
Aktifkan service menggunakan perintah berikut:
sudo systemctl daemon-reload
sudo systemctl enable fastapi-app
sudo systemctl start fastapi-app
Langkah 3: Konfigurasi Reverse Proxy di Nginx Proxy Manager
Buka dashboard Nginx Proxy Manager Anda (biasanya di port 81). Tambahkan Proxy Host atau atur Custom Location untuk subpath:
- Domain Names: Tentukan domain utama atau subdomain Anda.
- Forward Hostname / IP: Masukkan alamat host internal (misalnya IP host atau gateway Docker).
- Forward Port:
8092. - Websockets Support: Aktifkan untuk koneksi duplex jika diperlukan.
Untuk mempertahankan IP asli pengunjung dan protokol HTTPS pada aplikasi FastAPI, pastikan header forwarder disematkan pada Nginx:
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;
Header X-Forwarded-Proto sangat krusial agar FastAPI mengetahui bahwa request datang melalui koneksi aman (HTTPS), sehingga URL kanonis dan redirect tidak mengalami loop HTTP tidak aman.
Langkah 4: Optimasi SEO dan Kecepatan Akses (SSR)
Setelah pipeline deploy aktif, optimalkan faktor teknis SEO:
- Server-Side Rendering: Kembalikan full HTML menggunakan Jinja2 Templates saat route diakses, bukan sekadar JSON mentah.
- Sitemap Dinamis: Pastikan endpoint sitemap seperti
/sitemap.xmldiperbarui setiap ada artikel baru. - Data Terstruktur Schema.org: Pasang tag JSON-LD skema
BlogPostingagar Google Search Console mengenali entitas artikel Anda secara tepat.
Baca juga ulasan kami sebelumnya mengenai Strategi Optimasi SEO Modern untuk Aplikasi Berbasis Cloud dan AI untuk memperdalam implementasi Core Web Vitals.
Ringkasan
Kombinasi FastAPI, Systemd, dan Nginx Proxy Manager di Ubuntu 24.04 memberikan keseimbangan sempurna antara performa runtime Python yang tinggi, kemudahan sertifikasi SSL, dan visibilitas SEO organik yang superior.