Cara Mengatur CORS di NGINX untuk Aplikasi Modern
Hai, teman-teman developer! Pernah nggak sih kalian ngalamin masalah CORS (Cross-Origin Resource Sharing) pas lagi ngembangin aplikasi web modern? Nah, kalo iya, kalian nggak sendirian. CORS itu emang sering bikin pusing, tapi tenang aja, kita bisa atur CORS di NGINX dengan gampang. Yuk, simak caranya!
Apa Itu CORS?
Sebelum kita mulai, mungkin ada yang masih bingung, apa sih CORS itu? CORS itu mekanisme yang memungkinkan server web untuk mengizinkan atau menolak permintaan dari domain yang berbeda. Jadi, kalo aplikasi web kita mau ngakses resource dari server yang beda domain, CORS ini yang ngatur.
Kenapa Harus Atur CORS di NGINX?
Kalo kita nggak ngatur CORS, browser bakal ngeblok permintaan kita karena alasan keamanan. Nah, dengan ngatur CORS di NGINX, kita bisa ngasih izin ke domain tertentu buat ngakses resource kita. Ini penting banget buat aplikasi modern yang sering pake API dari berbagai sumber.
Langkah-Langkah Mengatur CORS di NGINX
Oke, langsung aja kita bahas gimana caranya ngatur CORS di NGINX. Berikut langkah-langkahnya:
Buka File Konfigurasi NGINX
Pertama, kita perlu buka file konfigurasi NGINX. Biasanya file ini ada di
/etc/nginx/nginx.conf
atau/etc/nginx/sites-available/default
. Tapi, kalo kalian pake konfigurasi khusus, cari aja file yang sesuai.sudo nano /etc/nginx/sites-available/default
Tambahkan Konfigurasi CORS
Di dalam blok
server
ataulocation
, tambahkan konfigurasi berikut:location / { if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; add_header 'Access-Control-Max-Age' 1728000; add_header 'Content-Type' 'text/plain; charset=utf-8'; add_header 'Content-Length' 0; return 204; } if ($request_method = 'POST') { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; } if ($request_method = 'GET') { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; } }
Kode di atas bakal ngizinkan semua domain (
*
) buat ngakses resource kita. Kalo kalian mau ngizinkan domain tertentu aja, ganti*
dengan domain yang diinginkan, misalnya'https://example.com'
.Simpan dan Restart NGINX
Setelah nambahin konfigurasi, simpan file dan restart NGINX biar perubahan berlaku.
sudo systemctl restart nginx
Penjelasan Konfigurasi CORS
Mungkin ada yang masih bingung sama konfigurasi di atas. Yuk, kita bahas satu per satu:
Access-Control-Allow-Origin
: Ngasih izin ke domain tertentu buat ngakses resource. Kalo pake*
, berarti semua domain diizinkan.Access-Control-Allow-Methods
: Ngasih izin buat metode HTTP tertentu, kayak GET, POST, atau OPTIONS.Access-Control-Allow-Headers
: Ngasih izin buat header tertentu yang bisa dikirim sama client.Access-Control-Max-Age
: Ngasih tahu browser berapa lama hasil preflight request bisa disimpan di cache.Access-Control-Expose-Headers
: Ngasih tahu browser header apa aja yang bisa diakses sama client.
Tips Tambahan
- Kalo kalian pake HTTPS, pastikan konfigurasi CORS juga ngikutin protokol HTTPS.
- Selalu uji konfigurasi CORS kalian pake tools kayak Postman atau langsung dari browser.
- Kalo masih ada masalah, cek log error NGINX di
/var/log/nginx/error.log
.
Nah, gampang kan ngatur CORS di NGINX? Dengan ngikutin langkah-langkah di atas, aplikasi web kalian bakal bisa ngakses resource dari berbagai domain tanpa masalah. Selamat mencoba!