Lompat ke konten utama

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.

Boleh beberapa, dipisah spasi.
Soket, atau http://127.0.0.1:3000 untuk proxy.

Dua alamat untuk satu isi merugikan peringkat pencarian.
Satu .env yang dapat diunduh publik sudah cukup untuk kehilangan seluruh database.

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 configtest

Konfigurasi 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.

Lanjut ke