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

halama 403 forbidden nginx

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]

Join the Conversation

8 Comments

Your email address will not be published. Required fields are marked *

  1. 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

      1. saya menaruh kode tersebut di /etc/nginx/sites-available/mywebsite.com
        tapi tidak bekerja.

          1. saya sudah meletakkan gambar yang saya hotlink pada situs saya yang lain, yang berbeda server, tapi gambarnya tetap muncul, walaupun cache browser telah dibersihkan.

              1. udah bisa, rupanya penempatannya aja yang salah, tapi hanya sebagian gambar yang di hotlink, sebagian gak