Konfigurasi Nginx dan PHP-FPM
Siapkan Nginx sebagai proksi terbalik ke PHP-FPM untuk menyajikan aplikasi PHP.
Konfigurasi Nginx dan PHP-FPM adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.
Mengapa Nginx + PHP-FPM?
Nginx adalah server web dan proksi balik berperforma tinggi. PHP-FPM (Manajer Proses FastCGI) mengelola kumpulan proses pekerja PHP. Nginx meneruskan permintaan PHP ke FPM melalui FastCGI.
Blok Server Nginx Dasar
Konfigurasi Nginx minimal untuk aplikasi PHP.
# /etc/nginx/sites-available/myapp
server {
listen 80;
server_name example.com;
root /srv/myapp/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}Direktif try_files
try_files $uri $uri/ /index.php?$query_string mencoba menyajikan berkas statis terlebih dahulu. Jika tidak ditemukan, direktif ini menggunakan index.php sebagai cadangan—sehingga perutean melalui pengontrol depan dapat digunakan (Laravel, Symfony).
Konfigurasi Kumpulan PHP-FPM
Konfigurasikan kumpulan pekerja di /etc/php/8.3/fpm/pool.d/www.conf.
[www]
pm = dynamic
pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pm.max_requests = 500 ; recycle workers to prevent leaksSoket Unix vs TCP
Menggunakan soket Unix (fastcgi_pass unix:/run/php/php8.3-fpm.sock) lebih cepat daripada TCP (127.0.0.1:9000) untuk komunikasi pada mesin yang sama.
HTTPS dengan Let's Encrypt
Gunakan Certbot untuk memperoleh sertifikat TLS gratis.
$ certbot --nginx -d example.com
# Certbot modifies your Nginx config and sets up auto-renewalKompresi Gzip
Aktifkan gzip untuk mengurangi ukuran respons.
# nginx.conf or server block:
gzip on;
gzip_types text/plain text/css application/javascript application/json;
gzip_min_length 1024;Caching Peramban untuk Aset Statis
Tambahkan header pengendali cache untuk berkas statis.
location ~* \.(js|css|png|jpg|gif|ico|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}Pembatasan Laju di Nginx
Batasi permintaan per IP menggunakan modul limit_req—ini menjadi garis pertahanan pertama bahkan sebelum PHP dijalankan.
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
}
server {
location /api/ {
limit_req zone=one burst=20 nodelay;
}
}Header Keamanan
Tambahkan header keamanan ke semua respons.
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin-when-cross-origin";Muat Ulang vs Mulai Ulang
Setelah mengubah konfigurasi Nginx, lakukan pemuatan ulang secara bertahap tanpa waktu henti: nginx -t && nginx -s reload. Setelah mengubah konfigurasi PHP-FPM: systemctl reload php8.3-fpm.
Ringkasan
Konfigurasikan Nginx dengan blok server yang menunjuk ke public/index.php melalui FastCGI. Sesuaikan pengaturan kumpulan PHP-FPM. Gunakan soket Unix. Aktifkan HTTPS, gzip, dan caching berkas statis.
Pemeriksaan Singkat
Apa yang dilakukan oleh try_files $uri $uri/ /index.php?$query_string?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Konfigurasi Nginx dan PHP-FPM” gratis?
Ya — teks lengkap “Konfigurasi Nginx dan PHP-FPM” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Konfigurasi Nginx dan PHP-FPM”?
Siapkan Nginx sebagai proksi terbalik ke PHP-FPM untuk menyajikan aplikasi PHP. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai PHP Academy?
Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Konfigurasi Nginx dan PHP-FPM” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?
Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Konfigurasi Nginx dan PHP-FPM
- Variabel Lingkungan dan File .env
- Menerapkan dengan GitHub Actions
- Membuat Aplikasi PHP dalam Docker