Nginx

Cara Menyekat Hotlinking dengan Nginx

Cara Menyekat Hotlinking dengan Nginx
Nginx adalah pelayan web ringan yang mampu menangani sejumlah besar permintaan pada waktu tertentu tanpa membuat pelayan sibuk. Ia mengandungi ciri-ciri canggih seperti pemprosesan tak segerak, sokongan ke ipv6, pemuat cache, sokongan http / 2, penyambungan pautan panas, kumpulan utas, SPDY dan SSL, dan banyak lagi. Antaranya salah satu ciri terpenting bagi mana-mana laman web pada amnya ialah sekatan hotlinking. Hotlinking adalah amalan jahat yang sering dilakukan oleh tuan web kecil tertentu apabila mereka tidak mampu membayar kos lebar jalur, dan akhirnya mereka mengambilnya dari tempat lain. Ini menghalang master web yang sah daripada menggunakan lebar jalur yang mereka bayar. Selain itu, sumber yang dipautkan mungkin tidak tersedia untuk pengguna yang mengunjungi laman web asal, ketika lebar jalur yang diperuntukkan untuk webmaster asal habis, dan pemilik laman web tidak membayar lebar jalur yang terlalu banyak digunakan. Secara keseluruhan, untuk menjaga integriti, ketersediaan pautan panas laman web harus dihentikan, dan panduan ini mengajarkan bagaimana menyelesaikannya dengan mudah.

Penyediaan

Dalam segmen penyediaan, arahan umum untuk kedua-dua kaedah yang dinyatakan kemudian dikeluarkan. Jelas sekali, penting untuk mempunyai konsol untuk mengakses pelayan melalui SSH, dan penyunting teks yang tepat sebagai nano untuk membuka fail konfigurasi Nginx. Setelah keduanya diperoleh, gunakan perintah berikut untuk membuka, menyimpan, dan menerapkan perubahan. Langkah-langkah berikut menganggap pengguna sudah mengakses pelayan melalui SSH.

nano / etc / nginx / laman web-tersedia / lalai

Kaedah 1: Kaedah Umum

Kaedah umum sangat mudah dilaksanakan dan difahami kerana hanya mengandungi blok lokasi. Selanjutnya, ia menyekat permintaan ke format fail tertentu sahaja dan bukannya menyekat setiap permintaan dari perujuk yang tidak sah ke pelayan.

  1. Salin coretan kod berikut.
  2. Buka fail nginx lalai seperti yang dilihat dalam fasa "Persiapan".
  3. Tampal potongan kod yang disalin di bawah blok lokasi pertama yang terdapat dalam fail lalai. Dalam nginx, huruf ekspresi biasa tidak peka (~ *) selalu diutamakan sebelum garis miring ke depan (/), dan dengan demikian potongan kod berikut dilaksanakan sebelum blok lokasi garis miring ke depan.
  4. Simpan, dan tutup fail lalai, dan kemudian ikuti 3, 4 langkah dalam fasa "Persiapan" untuk membuat perubahan berlaku.

Dalam contoh berikut, ia menyekat permintaan ke fail css, gif, ico, jpeg, js, png, woff, woff2, ttf, ttc, otf, dan eot. Terdapat 10 pernyataan bersyarat di bawah blok lokasi. Pernyataan bersyarat pertama membolehkan sumber dilihat secara langsung melalui penyemak imbas web, 2nd dan 3rd blok membolehkan sumber dilihat melalui laman web asal (sub domain telanjang, dan www), selebihnya blok kecuali carian?q dan blok terakhir membolehkan perayap mesin carian mengakses, dan mengindeks sumbernya, yang sangat penting untuk mengindeks gambar dalam kedua-dua gambar google, dan gambar bing. Pencarian?q membenarkan perkhidmatan cache google untuk mengakses, dan menyimpan sumber-sumber bersama dengan halaman, dan dengan itu halaman tersebut dapat diakses secara langsung melalui hasil pencarian google ketika laman web tersebut di luar talian.

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

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

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

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

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

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

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

jika ($ http_user_agent !~ * "googlebot")
tetapkan $ rule_0 8 $ rule_0;

jika ($ http_user_agent !~ * "msnbot")
tetapkan $ rule_0 9 $ rule_0;

jika ($ http_user_agent !~ * "slurp")
tetapkan $ rule_0 10 $ rule_0;

jika ($ rule_0 = "10987654321")
pulangan 403;
rehat;

Kaedah 2: Kaedah Valid_Referers

Perujuk yang sah adalah kaedah yang paling senang, dan dikenali ramai untuk menyekat perujuk yang tidak sah dengan mudah. Ia mengandungi hanya dua baris berbanding kaedah sebelumnya dan sangat fleksibel. Walau bagaimanapun, agak sukar untuk dicerna kerana ini melibatkan ungkapan biasa, dan mekanisme yang berbeza untuk menyekat permintaan dari perujuk yang tidak sah.

  1. Salin coretan kod berikut ke antara, dan di awal blok lokasi utama.
  2. Ganti senarai nama domain dengan nama domain yang dibenarkan, misalnya google, bing, atau domain anda sendiri dll.
  3. Simpan, dan tutup fail lalai, dan kemudian ikuti 3, 4 langkah dalam fasa "Persiapan" untuk membuat perubahan berlaku.

valid_referers tiada nama pelayan yang disekat

*.linux.com linux.* www.linux.com / mengenai /
~ \.linux \.;
 
jika ($ valid_referer)
pulangan 403;

Ini terutamanya mempunyai dua blok kod, valid_referers, dan ungkapan bersyarat jika dengan pemboleh ubah_referer tidak sah. Secara lalai, blok kod ini digunakan di antara, dan di awal blok lokasi sebelum pelaksanaan kod lain, tetapi dapat digunakan di tempat lain juga, seperti di antara blok kod lokasi dengan ungkapan biasa ke mengesan format fail tertentu untuk membuat penyekat itu relevan untuk format fail di atas, seperti dalam kaedah 1. Seperti yang dijelaskan sebelumnya, metode ini hanya berisi dua blok kod, blok kod pertama berisi 3 kata kunci, yang pertama adalah "tidak ada" ketika bidang rujukan hilang dalam permintaan HTTP, yang kedua "disekat" ketika bidang perujuk dihapus oleh mana-mana pihak tengah, seperti proksi, firewall dll., kata kunci ketiga adalah untuk menentukan nama domain yang sah.

Apabila nama domain dimulai dengan simbol "~" ia dianggap sebagai ungkapan biasa, dan dengan demikian corak yang sangat kompleks dapat digunakan, tetapi mungkin sukar untuk dimengerti jika ungkapan biasa tidak diketahui dengan baik. Sekiranya tidak ada syarat yang terpenuhi dalam pernyataan valid_referers, pemboleh ubah_referer tidak sah ditetapkan ke rentetan kosong, jika tidak, ia ditetapkan ke 1, apa artinya jika permintaan yang akan datang tidak mengandungi medan perujuk, atau jika nginx mengenal pasti medan perujuk dikeluarkan oleh firewall atau proksi, atau jika medan perujuk ditetapkan ke domain yang ditentukan (senarai nama domain yang sah) maka pemboleh ubah perujuk tidak sah diatur ke rentetan kosong, dan dengan itu jika keadaan tidak dijalankan. Namun, jika permintaan berasal dari domain yang tidak ditentukan dalam ekspresi valid_referers sebagai domain yang sah, maka ia disekat.

KESIMPULAN

Pastikan untuk mempertimbangkan kandungan ini dan mengelakkan pautan panas di laman web yang dihoskan oleh Nginx anda.

Enjin Permainan Sumber Percuma dan Terbuka untuk Membangunkan Permainan Linux
Artikel ini akan merangkumi senarai enjin permainan sumber percuma dan terbuka yang dapat digunakan untuk mengembangkan permainan 2D dan 3D di Linux. ...
Shadow of the Tomb Raider untuk Tutorial Linux
Shadow of the Tomb Raider adalah penambahan kedua belas untuk siri Tomb Raider - francais permainan aksi-pengembaraan yang dibuat oleh Eidos Montreal....
Cara Meningkatkan FPS di Linux?
FPS bermaksud Bingkai sesaat. Tugas FPS adalah mengukur kadar bingkai dalam pemutaran video atau persembahan permainan. Dengan kata mudah bilangan gam...