Nginx

Cara Memblokir Hotlinking dengan Nginx

Cara Memblokir Hotlinking dengan Nginx
Nginx adalah server web ringan yang mampu menangani sejumlah besar permintaan pada waktu tertentu tanpa membuat server sibuk. Ini berisi fitur-fitur canggih seperti pemrosesan asinkron, dukungan untuk ipv6, pemuat cache, dukungan http/2, hotlinking blok, kumpulan utas, SPDY dan SSL, dan banyak lagi. Di antara mereka, salah satu fitur terpenting untuk situs web apa pun secara umum adalah memblokir hotlinking. Hotlinking adalah praktik jahat yang sering dilakukan oleh master web kecil tertentu ketika mereka tidak mampu membayar biaya bandwidth, dan dengan demikian mereka akhirnya mengambilnya dari tempat lain. Ini menghambat master web yang sah untuk memanfaatkan bandwidth yang mereka bayar. Selain itu, sumber daya yang ditautkan mungkin tidak tersedia untuk pengguna yang mengunjungi situs web asli, ketika bandwidth yang dialokasikan untuk webmaster asli habis, dan pemilik situs tidak membayar untuk bandwidth yang dikonsumsi secara berlebihan. Secara keseluruhan, untuk menjaga integritas, ketersediaan hotlinking situs web harus dihentikan, dan panduan ini mengajarkan cara menyelesaikannya dengan mudah.

Persiapan

Di segmen persiapan, instruksi umum untuk kedua metode tersebut kemudian dihapus. Jelas, penting untuk memiliki konsol untuk mengakses server melalui SSH, dan editor teks yang tepat sebagai nano untuk membuka file konfigurasi Nginx. Setelah keduanya diperoleh, gunakan perintah berikut untuk membuka, menyimpan, dan menerapkan perubahan. Langkah-langkah berikut mengasumsikan pengguna sudah mengakses server melalui SSH.

nano /etc/nginx/sites-available/default

Metode 1: Metode Umum

Metode umum sangat mudah diterapkan dan dipahami karena hanya berisi blok lokasi. Selain itu, ini memblokir permintaan ke format file tertentu saja alih-alih memblokir setiap permintaan dari referensi yang tidak valid ke server.

  1. Salin cuplikan kode berikut.
  2. Buka file default nginx seperti yang terlihat pada fase "Persiapan".
  3. Rekatkan cuplikan kode yang disalin di bawah blok lokasi pertama yang ditemukan di file default. Di nginx, ekspresi reguler case insensitive (~*) selalu diprioritaskan sebelum garis miring (/), dan dengan demikian cuplikan kode berikut dijalankan sebelum blok lokasi garis miring.
  4. Simpan, dan tutup file default, lalu ikuti 3, 4 langkah dalam fase "Persiapan" untuk membuat perubahan diterapkan.

Dalam contoh berikut, ini memblokir permintaan ke file css, gif, ico, jpeg, js, png, woff, woff2, ttf, ttc, otf, dan eot. Ada 10 pernyataan kondisional di bawah blok lokasi. Pernyataan kondisional pertama memungkinkan sumber daya untuk dilihat langsung melalui browser web, 2dan dan 3rd blok memungkinkan sumber daya untuk dilihat melalui situs asli (baik telanjang, dan sub domain www), sisa blok kecuali pencarian?q dan blok terakhir memungkinkan perayap mesin pencari mengakses, dan mengindeks sumber daya, yang sangat penting untuk mengindeks gambar di gambar google, dan gambar bing. Pencarian?q memungkinkan layanan cache google untuk mengakses, dan menyimpan sumber daya bersama dengan halaman, dan dengan demikian halaman dapat diakses langsung melalui hasil pencarian google ketika situs sedang offline.

lokasi ~* \.(css|gif|ico|jpeg|jpg|js|png|woff|woff2|ttf|ttc|otf|eot)$
jika ($http_referer !~ "^$")
set $rule_0 1$rule_0;

jika ($http_referer !~ "^http://nucuta.com/.*$")
atur $rule_0 2$rule_0;

jika ($http_referer !~ "^http://nucuta.com$")
set $rule_0 3$rule_0;

jika ($http_referer !~~ "google.")
setel $rule_0 4$rule_0;

jika ($http_referer !~~ "cari?q=cache")
atur $rule_0 5$rule_0;

jika ($http_referer !~~ "msn.")
setel $rule_0 6$rule_0;

jika ($http_referer !~~ "yahoo.")
setel $rule_0 7$rule_0;

if ($http_user_agent !~~ "googlebot")
setel $rule_0 8$rule_0;

if ($http_user_agent !~~ "msnbot")
setel $rule_0 9$rule_0;

if ($http_user_agent !~~ "menyeruput")
setel $rule_0 10$rule_0;

if ($rule_0 = "10987654321")
kembali 403;
istirahat;

Metode 2: Metode Valid_Referers

Referensi yang valid adalah yang paling nyaman, dan metode yang dikenal luas untuk memblokir referensi yang tidak valid dengan mudah. Ini hanya berisi dua baris dibandingkan dengan metode sebelumnya dan sangat fleksibel. Namun, agak sulit untuk dicerna karena melibatkan ekspresi reguler, dan mekanisme yang berbeda untuk memblokir permintaan dari referensi yang tidak valid.

  1. Salin cuplikan kode berikut ke antara, dan di awal blok lokasi utama.
  2. Ganti daftar nama domain dengan nama domain yang diizinkan, misalnya google, bing, atau domain Anda sendiri dll.
  3. Simpan, dan tutup file default, lalu ikuti 3, 4 langkah dalam fase "Persiapan" untuk membuat perubahan diterapkan.

valid_referers tidak ada server_names yang diblokir

*.linux.com linux.* www.linux.com/tentang/
~\.linux\.;
 
if ($invalid_referer)
kembali 403;

Ini terutama memiliki dua blok kode, valid_referers, dan ekspresi kondisi if dengan variabel invalid_referer. Secara default, blok kode ini digunakan di antara, dan di awal blok lokasi sebelum eksekusi kode lain, tetapi dapat digunakan di tempat lain juga, seperti di antara blok kode lokasi dengan ekspresi reguler untuk mendeteksi format file tertentu untuk membuat pemblokiran relevan untuk format file tersebut di atas, seperti pada metode 1. Seperti yang dijelaskan sebelumnya, metode ini hanya berisi dua blok kode, blok kode pertama berisi 3 kata kunci, yang pertama adalah "tidak ada" ketika bidang rujukan tidak ada dalam permintaan HTTP, yang kedua "diblokir" ketika bidang rujukan dihapus. oleh pihak tengah mana pun, seperti proxy, firewall, dll., kata kunci ketiga adalah untuk menentukan nama domain yang valid.

Ketika nama domain dimulai dengan simbol "~" itu dianggap sebagai ekspresi reguler, dan dengan demikian pola yang sangat kompleks dapat digunakan, tetapi mungkin sulit untuk memahami jika ekspresi reguler tidak dikenal dengan baik. Jika tidak ada kondisi yang terpenuhi dalam pernyataan valid_referers, variabel invalid_referer disetel ke string kosong, jika tidak disetel ke 1, apa artinya jika permintaan yang datang tidak berisi bidang rujukan apa pun, atau jika nginx mengidentifikasi bahwa bidang rujukan dihapus oleh firewall atau proxy, atau jika bidang rujukan diatur ke domain yang ditentukan (daftar nama domain yang valid) maka variabel rujukan yang tidak valid disetel ke string kosong, dan dengan demikian kondisi if tidak dijalankan. Namun, jika permintaan berasal dari domain yang tidak ditentukan dalam ekspresi valid_referers sebagai domain yang valid, permintaan tersebut akan diblokir.

KESIMPULAN

Pastikan untuk mempertimbangkan konten ini dan mencegah hotlinking di situs yang dihosting Nginx Anda.

Tiru klik Mouse dengan mengarahkan mouse menggunakan Clickless Mouse di Windows 10
Menggunakan mouse atau keyboard dalam posisi yang salah dari penggunaan yang berlebihan dapat menyebabkan banyak masalah kesehatan, termasuk keteganga...
Tambahkan gerakan Mouse ke Windows 10 menggunakan alat gratis ini
Dalam beberapa tahun terakhir, komputer dan sistem operasi telah berkembang pesat. Ada saat ketika pengguna harus menggunakan perintah untuk menavigas...
Kontrol & kelola gerakan mouse di antara beberapa monitor di Windows 10
Manajer Mouse Tampilan Ganda memungkinkan Anda mengontrol & mengonfigurasi gerakan mouse di antara beberapa monitor, dengan memperlambat gerakannya di...