Mencegah hotlink konten pada Nginx
Bayangkan saja anda upload gambar dan ternyata ada yang langsung menyisipkannya website atau forum lainnya. Bukan masalah tidak diijinkan atau tidak etis, tapi efek yang terasa kalau konten tersebut malah lebih ramai dibuka di tempat lain adalah konsumsi bandwidthnya. Ini istilahnya ada hotlink dan bisa merugikan kita karena besar bandwidth dari hosting maupun VPS itu dibatasi pastinya.
Dulu saya pernah membahasnya untuk Apache dan sekarang adalah gilirannya Nginx. Karena salah satu klien saya butuh dan sekalian saja saya tuliskan tutorialnya. Hehe. 😀
Langkah pertama adalah mengedit konfigurasi Nginx dan kemudian tambahkan kode berikut:
location ~ \.(jpe?g|png|gif)$ {
valid_referers none blocked nama_domain_saya.com *.nama_domain_saya.com;
if ($invalid_referer) {
return 403;
}
}
Fungsi kode diatas adalah bahwa setiap konten (disini saya fokusnya pada gambar/foto) dengan ekstensi jpg
, jpeg
, png
dan gif
akan diblokir kalau diakses (referer header) bukan dari situs yang diijinkan.
Jangan lupa reload/restart Nginx setelahnya. 🙂
ini baiknya dimasukkan ke nginx.conf atau masing2 virtual host mas?
Kalau saya diletakkan dalam virtual host mbak. Tapi kalau mau berlaku universal memang sebaiknya di
nginx.conf
.virtual host itu letaknya dimana ya mas?
harus login lewat putty?
Nginx? Bisa dicek disini mas: https://servernesia.com/1499/lokasi-virtual-host-nginx/
Ya, idealnya lewat SSH untuk manajemennya.
mas chandra, kalau pakai fungsi di atas apakah harus instal module nginx ngx_http_referer_module atau sudah include default?
http://nginx.org/en/docs/http/ngx_http_referer_module.html
saya cek nginx -V muncul info berikut:
trims sebelumnya.
Modul referer ini sudah diikutkan secara default mbak setahu saya.