api.co.id – Sebagai developer, kita semua tahu banget kalau keamanan web itu pentingnya minta ampun. Nah, di api.co.id, kami selalu mendorong praktik terbaik untuk memastikan aplikasi kamu aman dan performanya ngebut. Salah satu pilar utamanya adalah konfigurasi NGINX HTTPS yang benar. Dengan NGINX, kamu bisa ngatur server web biar koneksinya aman pakai SSL/TLS, sekaligus performanya tetap optimal. Yuk, kita kupas tuntas gimana caranya!

Kenapa HTTPS Penting Banget di NGINX?
Pasti kamu udah sering dengar soal HTTPS, kan? Tapi, sebenarnya kenapa sih harus pakai HTTPS di NGINX? Ada beberapa alasan kuat nih:
Keamanan Data Pengguna
Ini yang paling utama. HTTPS itu berfungsi mengenkripsi semua data yang dikirim antara browser pengguna dan server kamu. Jadi, informasi sensitif kayak password, data kartu kredit, atau info pribadi lainnya aman dari intipan pihak yang nggak bertanggung jawab. Ibaratnya, data kamu dikirim dalam amplop tertutup rapat, nggak gampang diotak-atik.
Kredibilitas dan Kepercayaan
Coba deh perhatiin, browser modern sekarang kan nunjukkin tanda ‘gembok’ di URL kalau situsnya aman pakai HTTPS. Itu kasih sinyal ke user kalau situsmu bisa dipercaya. Kalau nggak ada gemboknya, kadang malah muncul peringatan ‘Not Secure’. Ini bisa bikin pengunjung kabur, lho!
SEO dan Performa
Search engine kayak Google juga memprioritaskan situs yang pakai HTTPS. Jadi, ini bisa bantu dongkrak peringkat SEO kamu di hasil pencarian. Selain itu, dengan teknologi modern kayak HTTP/2 yang cuma jalan di atas HTTPS, performa website juga bisa makin ngebut.
related article: Cara Install SSL di NGINX Menggunakan Certbot dan Let’s Encrypt
Persiapan Sebelum Konfigurasi
Sebelum kita nyemplung ke kodenya, ada beberapa hal yang perlu kamu siapin dulu nih:
Punya Sertifikat SSL/TLS
Jelas, dong! Nggak mungkin kan mau pakai HTTPS tapi nggak punya Sertifikat SSL? Kamu bisa dapat sertifikat dari berbagai sumber, baik yang gratis kayak Let’s Encrypt atau yang berbayar dari penyedia komersial. Pastiin sertifikatnya valid ya.
Pahami Struktur Direktori NGINX
NGINX itu punya struktur file konfigurasi yang cukup fleksibel. Biasanya, file konfigurasi utama ada di /etc/nginx/nginx.conf, terus server block khusus situs ada di /etc/nginx/sites-available/. File-file ini nantinya di-symlink ke /etc/nginx/sites-enabled/ biar aktif. Pahami letak file .crt (sertifikat) dan .key (kunci privat) kamu.
Langkah-langkah Konfigurasi NGINX untuk HTTPS
Oke, sekarang masuk ke inti bahasannya. Ini dia langkah-langkah buat konfigurasi NGINX HTTPS di server kamu:
1. Buat Server Block Baru atau Edit yang Sudah Ada
Pertama, kita perlu mendefinisikan server block untuk situs yang mau kamu amankan. Biasanya, kamu bisa bikin file baru di /etc/nginx/sites-available/namadomain.conf. Kalau udah ada, tinggal diedit aja.
server {
listen 443 ssl http2; # Tambahkan 'ssl' dan 'http2'
listen [::]:443 ssl http2; # Untuk IPv6, juga tambahkan 'ssl' dan 'http2'
server_name namadomain.com www.namadomain.com;
ssl_certificate /path/to/your_domain.crt;
ssl_certificate_key /path/to/your_domain.key;
# ... konfigurasi lain ...
}
Di sini, kita pakai listen 443 ssl http2;. Parameter ssl itu wajib biar NGINX tau ini koneksi aman, dan http2 biar protokol HTTP/2 aktif. Ini bagus banget buat performa!
2. Arahkan ke Sertifikat SSL
Kamu perlu kasih tau NGINX di mana lokasi file sertifikat (.crt) dan kunci privat (.key) kamu. Pastiin path-nya bener ya dan kunci privatnya cuma bisa dibaca sama user NGINX.
ssl_certificate /path/to/your_domain.crt;ssl_certificate_key /path/to/your_domain.key;
3. Konfigurasi Protokol dan Cipher SSL/TLS
Penting banget buat pakai protokol dan cipher yang kuat biar keamanan SSL NGINX kamu optimal. Hindari protokol lama kayak TLSv1.0 atau TLSv1.1 karena udah nggak aman.
ssl_protocols TLSv1.2 TLSv1.3; # Rekomendasi pakai TLSv1.2 dan TLSv1.3ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';ssl_prefer_server_ciphers on;
ssl_prefer_server_ciphers on; ini gunanya biar NGINX yang mutusin cipher mana yang mau dipakai, bukan klien. Ini bikin server kamu lebih aman.
4. Redirect HTTP ke HTTPS
Kamu pasti mau semua trafik diarahkan ke HTTPS, kan? Biar aman dan nggak ada yang salah akses via HTTP. Caranya gampang banget!
server { listen 80; listen [::]:80; server_name namadomain.com www.namadomain.com; return 301 https://$host$request_uri;}
Server block di atas akan nge-redirect semua permintaan HTTP ke HTTPS secara otomatis dengan kode status 301 (Permanent Redirect).
related article: 4 Penyedia API Wilayah Indonesia Gratis Dari Provinsi Hingga Kode Pos
Optimasi Keamanan dan Performa SSL/TLS di NGINX
Sekarang, kita masuk ke bagian yang bikin konfigurasi NGINX HTTPS kamu makin mantap, baik dari sisi keamanan maupun performa.
1. HTTP Strict Transport Security (HSTS)
HSTS ini fitur keamanan keren yang ngasih tau browser klien bahwa situs kamu cuma boleh diakses lewat HTTPS, dalam jangka waktu tertentu. Jadi, meskipun ada yang ngetik http://, browser otomatis bakal ganti jadi https://. Ini ngelindungi dari serangan SSL stripping.
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
max-age itu durasi (dalam detik) browser mengingat kebijakan HSTS. includeSubDomains bikin HSTS berlaku juga buat semua subdomain.
2. OCSP Stapling
OCSP Stapling ini teknik buat ngebutin validasi sertifikat SSL/TLS kamu. Biasanya, browser harus ngecek status revokasi sertifikat ke server OCSP. Nah, dengan OCSP Stapling, NGINX yang bakal ambil info itu duluan dan ngirim bareng sertifikat ke browser. Jadi, prosesnya lebih cepat dan privat.
ssl_stapling on;ssl_stapling_verify on;ssl_trusted_certificate /path/to/fullchain.pem; # Pastikan ini file fullchain kamuresolver 8.8.8.8 8.8.4.4 valid=300s; # Pakai DNS resolver yang stabilresolver_timeout 5s;
ssl_trusted_certificate itu penting banget buat OCSP Stapling. Isinya harus sertifikat perantara (intermediate) dan root kamu digabungin jadi satu file.
3. SSL Session Cache
Setiap kali ada koneksi HTTPS baru, ada proses SSL handshake yang butuh resource CPU lumayan. Dengan SSL Session Cache, NGINX bisa menyimpan parameter sesi SSL biar koneksi selanjutnya nggak perlu ngulang handshake dari awal. Ini bisa ningkatin performa dan mengurangi beban server.
ssl_session_cache shared:SSL:10m; # 'SSL' nama cache, '10m' ukuran cache (10MB, sekitar 4000 sesi)ssl_session_timeout 10m; # Durasi sesi disimpan (10 menit)
Ukuran cache 10m itu cukup buat sekitar 4000 sesi. Kamu bisa sesuaikan tergantung kebutuhan dan trafik servermu.
Mengecek Konfigurasi NGINX
Setelah semua konfigurasi udah kamu terapkan, jangan langsung di-restart ya NGINX-nya! Penting banget buat ngecek dulu apakah ada kesalahan sintaks atau nggak.
sudo nginx -t
Kalau output-nya bilang syntax is ok dan test is successful, baru deh kamu bisa reload atau restart NGINX dengan aman.
sudo systemctl reload nginx # Atau sudo systemctl restart nginx
Setelah itu, coba akses situs kamu di browser dan cek tanda gemboknya, atau pakai tool online kayak SSL Labs buat ngecek seberapa kuat konfigurasi NGINX SSL/TLS kamu.
Penutup
Jadi, begitulah panduan lengkap konfigurasi NGINX HTTPS biar server kamu nggak cuma aman, tapi juga ngebut performanya. Dengan mengikuti langkah-langkah ini dan menerapkan optimasi yang udah kita bahas, kamu bisa bikin situs yang kredibel, aman dari ancaman siber, dan pastinya disukai sama pengunjung. Ingat, keamanan web itu bukan sekali jalan, tapi harus selalu di-update dan dipantau. Selamat mencoba!






