Saat saya melihat situs bench.sh, saya tertarik akan caranya melayani akses download fle jika kita melakukan wget ke situs tersebut. Ternyata hal ini dengan memanfaatkan fungsi pendeteksian user agent oleh Nginx.
Kali ini, saya akan merubah pelayanan Nginx supaya ketika ada orang yang melakukan wget ke situs ini, akan mendownload file 100mb dari cachefly :p
Contoh file konfigurasi saya adalah /etc/nginx/sites-enabled/erawanarifnugroho.com.conf
1 2 3 4 5 6 7 8 9 |
server { ... # Konfigurasi jika ada yang memakai Wget, maka arahkan ke situs cachefly if ($http_user_agent ~* (wget) ) { rewrite ^(.*) http://cachefly.cachefly.net/100mb.bin permanent; } } |
Berikut adalah hasilnya jika ada yang mencoba melakukan wget :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# wget erawanarifnugroho.com URL transformed to HTTPS due to an HSTS policy --2018-09-03 14:49:08-- https://erawanarifnugroho.com/ Resolving erawanarifnugroho.com (erawanarifnugroho.com)... Connecting to erawanarifnugroho.com (erawanarifnugroho.com)|... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: http://cachefly.cachefly.net/100mb.bin [following] --2018-09-03 14:49:08-- http://cachefly.cachefly.net/100mb.bin Resolving cachefly.cachefly.net (cachefly.cachefly.net)... 205.234.175.175 Connecting to cachefly.cachefly.net (cachefly.cachefly.net)|205.234.175.175|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 104857600 (100M) [application/octet-stream] Saving to: ‘index.html’ |
Bisa juga, kita iseng mengarahkan request wget ke situs lain, misalnya FBI atau yang lain. Perhatikan pemakaian simbol $ pada contoh konfigurasi dibawah. Coba bandingkan antara memakai $ dan tidak memakai $, hasil requestnya seperti apa.
1 2 3 4 5 6 7 8 9 |
server { ... # Konfigurasi jika ada yang memakai Wget, maka arahkan ke fbi if ($http_user_agent ~* (wget) ) { rewrite ^(.*) http://fbi.gov$1 permanent; } } |
Jika kita ingin mematikan akses terhadap user agent wget secara total, maka berikut adalah contoh konfigurasinya
1 2 3 4 5 6 7 8 9 10 |
server { ... # Konfigurasi jika ada yang memakai Wget, maka matikan if ($http_user_agent ~* (wget) ) { return 403; } } |