Generator Konfigurasi Nginx & Apache
Virtual host lengkap, dari HTTPS sampai penutup file .env
Susun konfigurasi situs untuk Nginx atau Apache: HTTPS dengan pengalihan, penyatuan www, PHP-FPM atau proxy, kompresi, cache, header keamanan, dan penutupan file rahasia.
Simpan ke folder konfigurasi server web Anda, uji dengan nginx -t atau apachectl configtest, lalu muat ulang. Langkahnya lengkap di bagian bawah hasil.
Seluruh perhitungan berjalan di browser Anda. Alamat IP, nama interface, dan password yang Anda masukkan tidak pernah dikirim ke server CoreNet.
Yang dihasilkan
Satu file konfigurasi utuh untuk sebuah situs — blok pengalihan HTTP, penyatuan www, blok utama dengan TLS, penanganan PHP atau proxy, kompresi, cache file statis, header keamanan, dan penutupan file rahasia.
Satu baris yang paling sering menyelamatkan
location ~ /(\.env|composer\.(json|lock)|package\.json)$ {
deny all;
}File .env yang dapat diunduh publik berisi kredensial database, kunci API, dan password email. Pemindai otomatis mencobanya di setiap situs yang mereka temukan — bukan karena menargetkan Anda, tetapi karena mencoba semuanya. Satu file yang terlewat sudah cukup untuk kehilangan seluruh database.
Ini terjadi ketika folder dokumen diarahkan ke akar proyek alih-alih ke public/. Tool ini tidak dapat mencegah kesalahan itu, tetapi baris di atas membatasi akibatnya.
Pengecualian ACME yang wajib ada
Blok pengalihan HTTP→HTTPS harus menyisakan /.well-known/acme-challenge/ tetap dapat diakses lewat HTTP polos. Tanpa itu, perpanjangan sertifikat otomatis gagal — dan gagalnya baru ketahuan 90 hari kemudian, saat situs tiba-tiba menampilkan peringatan sertifikat kedaluwarsa.
Konfigurasi yang dihasilkan menyertakan pengecualian ini secara default.
Perilaku add_header pada Nginx yang menjebak
Sebuah blok location yang punya add_header sendiri akan membuang seluruh add_header dari blok induknya, bukan menambahkannya. Jadi header keamanan yang dipasang di tingkat server akan hilang pada setiap location yang punya header sendiri.
Bila header keamanan Anda terlihat pada sebagian halaman dan hilang pada sebagian lain, inilah sebabnya. Ini salah satu perbedaan perilaku Nginx yang paling sering mengejutkan orang yang datang dari Apache.
Cache file statis, dan syaratnya
Menyimpan CSS dan gambar selama 30 hari di browser jelas mempercepat. Tetapi itu hanya aman bila nama filenya berubah saat isinya berubah. Tanpa penanda versi, pengunjung lama akan melihat CSS usang berbulan-bulan — dan tidak ada cara memaksa mereka menyegarkannya.
X-Forwarded-Proto pada mode proxy
Aplikasi di balik proxy perlu tahu bahwa pengunjung datang lewat HTTPS. Tanpa header ini, aplikasi mengira dirinya diakses lewat HTTP polos, lalu membangun link http:// di dalam halaman HTTPS — dan browser memblokirnya sebagai konten campuran.
HSTS sengaja dijadikan komentar
Baris Strict-Transport-Security disertakan tetapi dalam keadaan mati. Itu disengaja: HSTS memberi tahu browser untuk tidak pernah lagi memakai HTTP pada domain ini, dan ingatan itu ada di browser pengunjung — tidak dapat dibatalkan dari sisi server. Nyalakan setelah HTTPS berjalan mulus beberapa minggu.
Rinciannya di Pemilih Konfigurasi TLS.
Selalu uji sebelum memuat ulang
sudo nginx -t # atau
sudo apachectl configtestKonfigurasi yang salah membuat server web menolak menyala — dan yang ikut mati bukan hanya situs baru ini, melainkan seluruh situs di server yang sama.
Pertanyaan yang sering diajukan
Nginx atau Apache? Nginx lebih hemat memori pada traffic besar dan lebih cepat menyajikan file statis. Apache lebih mudah untuk aplikasi yang mengandalkan .htaccess. Untuk situs baru, Nginx adalah pilihan default yang wajar.
Kenapa muncul 502 Bad Gateway? Nginx tidak dapat menghubungi PHP-FPM. Periksa jalur soketnya (ls -l /run/php/) dan pastikan PHP-FPM berjalan.
Perlukah AllowOverride All di Apache? Hanya bila aplikasi Anda mengandalkan .htaccess. AllowOverride All membuat Apache memeriksa file itu pada setiap permintaan di setiap tingkat folder — terukur lebih lambat.