Baru-baru ini saya membuat sekumpulan kode untuk sekedar coba-coba mengembangkan Rest full API. Semua berjalan lancar ketika masih di localhost (ya iyalahhh), namun masalah muncul ketika saya upload ke vps dengan web server nginx (nging / en-jin-eks) dan ternyata ada request header yang saya kirimkan tidak sampai, atau dengan kata lain ada request header yang hilang. uwoowwww!!
Saya sempat frustasi sebenernya, untung masih diselamatkan suhu stackoverflow (Hayo siapa yang belum pernah melihat halaman antar muka web stackoverflow? untung saya sudah). Pada intinya nginx secara default hanya mengizinkan karakter – (hypen) sebagai penyambung nama variabel diheader. Usut punya usut ternyata hal ini merupakan legacy dari CGI yang mana hal ini dilakukan untuk mencegah ambiguitas saat memetakan header ke variabel CGI karena tanda hubung dan garis bawah dipetakan ke garis bawah selama proses tersebut. Nah coba baca deh Missing (disappearing) HTTP Headers disitu sudah dijelaskan.
Nah agar Nginx dapat menerima header dengan garis bawah, maka kita perlu menambahkan parameter berikut ini di blok server konfigurasi Nginx.
server{
listen 80;
listen [::]:80;
server_name cumadomainsaja.com;
underscores_in_headers on;
...
}
Pastikan untuk mengecek apakah konfigurasinya benar dengan eksekusi nginx -t pada terminal. Jika sudah Ok restart nginx-nya service nginx restart.
Setelah berhasil restart seharusnya parameter header yang memakai underscore bisa terkirim ke server.
Semoga bermanfaat.