Bila anda kehabisan bandwidth atau load server tinggi karena banyak yang meng-embed gambar atau file lainnya dari server anda, di nginx ada modul ngx_http_referer_module yang bisa digunakan untuk memblokir semua yang embed file dari server anda, ataupun untuk me-whitelist domain-domain yang diijinkan untuk mengembed file.
tambahkan potongan code dibawah ini didalam server { }
location ~ \.(mp3|webp|png|jpg)$ { valid_referers blocked domain.com subdomain.domain.com domain.net domain.id; if ($invalid_referer) { return 403; } }
setelah menambahkan potongan kode diatas jangan lupa untuk mengetes konfigurasi nginx nginx -t
lalu reload systemctl reload nginx
untuk mengaplikasikan perubahannya.
Bila ada yang mengakses langsung file tersebut akan ditampilkan 403 Forbidden
Cara Testing
Untuk testing apakah konfigurasi nginx diatas bisa digunakan, kita test menggunakan wget
Tanpa referer, akses di block
> wget http://linkdownload.jaranguda.com/file.mp3 -O /dev/null --2019-06-24 17:18:29-- http://linkdownload.jaranguda.com/file.mp3 Resolving linkdownload.jaranguda.com (linkdownload.jaranguda.com)... 192.168.0.1 Connecting to linkdownload.jaranguda.com (linkdownload.jaranguda.com)|192.168.0.1|:80... connected. HTTP request sent, awaiting response... 403 Forbidden 2019-06-24 17:18:30 ERROR 403: Forbidden.
Dengan referer, file bisa diload atau di download
> wget --referer "domain.id" http://linkdownload.jaranguda.com/file.mp3 -O /dev/null --2019-06-24 17:18:31-- http://linkdownload.jaranguda.com/file.mp3 Resolving linkdownload.jaranguda.com (linkdownload.jaranguda.com)... 192.168.0.1 Connecting to linkdownload.jaranguda.com (linkdownload.jaranguda.com)|192.168.0.1|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 6924490 (6.6M) [audio/mpeg] Saving to: ‘/dev/null’ /dev/null 100%[=======================================================>] 6.60M 583KB/s in 9.8s 2019-06-24 17:18:42 (688 KB/s) - ‘/dev/null’ saved [6924490/6924490]
berapa lama hotlink baru akan bekerja setelah kita menaruh kodenya? apakah sampai seminggu baru gambar tidak bisa lagi di akses di web lain atau yang bukan web kita. trims
langsung sesudah di aplikasikan perubahannya
saya menaruh kode tersebut di /etc/nginx/sites-available/mywebsite.com
tapi tidak bekerja.
ngga bekerjanya gimana ya?
saya sudah meletakkan gambar yang saya hotlink pada situs saya yang lain, yang berbeda server, tapi gambarnya tetap muncul, walaupun cache browser telah dibersihkan.
barusan saya test di nginx/1.18.0 jalan kok. Coba lihat config lengkapnya
udah bisa, rupanya penempatannya aja yang salah, tapi hanya sebagian gambar yang di hotlink, sebagian gak
harusnya sih semuanya terblokir hehe, mungkin ada di config yang perlu di benerin