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.
- Ketik arahan berikut untuk membuka fail konfigurasi lalai Nginx. Sekiranya setiap domain mempunyai fail konfigurasi yang terpisah, gunakan namanya dan bukannya lalai.
- Dalam fail lalai atau konfigurasi taipkan kod yang dinyatakan dalam salah satu kaedah yang disebut kemudian. Pastikan hanya menggunakan salah satu daripadanya.
- Gunakan perintah berikut untuk menguji fail konfigurasi sebelum mendorongnya ke mod langsung.
- Sekiranya semuanya berada dalam urutan yang betul, teruskan dan ketik perintah berikut untuk menerapkan perubahan yang akan berlaku.
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.
- Salin coretan kod berikut.
- Buka fail nginx lalai seperti yang dilihat dalam fasa "Persiapan".
- 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.
- 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.
- Salin coretan kod berikut ke antara, dan di awal blok lokasi utama.
- Ganti senarai nama domain dengan nama domain yang dibenarkan, misalnya google, bing, atau domain anda sendiri dll.
- 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.