এনগিনেক্স - নির্দিষ্ট আইপি দিয়ে ব্যবহারকারীদের কীভাবে বিশেষ পৃষ্ঠায় পুনর্নির্দেশ করবেন


26

আমি বেশ বড় একটি ইমেজ গ্যালারী চালাচ্ছি এবং সেখানে 5 জন দর্শক রয়েছে যা ওয়েবকপিয়ারগুলি ব্যবহার করে প্রতিদিন পুরো সাইটটি ডাউনলোড করে প্রচুর পরিমাণে ট্র্যাফিক তৈরি করে। এই দর্শনার্থীদের স্থির আইপি রয়েছে বলে মনে হচ্ছে। আমি যেটি অর্জন করতে চাই তা হ'ল এই 5 টি আইপি একটি নির্দিষ্ট পৃষ্ঠায় পুনঃনির্দেশিত হয়ে যায় (যা তাদের আচরণটি সমস্যাযুক্ত কেন তা ব্যাখ্যা করে) তারা সাইটটিতে যাওয়ার সাথে সাথে। অন্যান্য সমস্ত দর্শনার্থীদের সাইটটি সাধারণত ব্রাউজ করতে সক্ষম হওয়া উচিত।

সার্ভারটি ওয়েব সার্ভার হিসাবে সেন্টোস (5.8) এবং এনগিনেক্স (1.0.15) চলছে। আপনি অবগত যে nginx.conf এ এন্ট্রি দ্বারা এটি অর্জন করার কোন উপায় আছে?

আপনার ইঙ্গিত এবং সহায়তার জন্য আগাম আপনাকে অনেক ধন্যবাদ!

দয়া করে -আলেক্স

উত্তর:


34

জিও মডিউল ক্লায়েন্ট ঠিকানাগুলির সাথে মেলানোর জন্য তৈরি করা হয়। আপনি এটির মতো পরীক্ষার জন্য একটি ভেরিয়েবল সংজ্ঞায়িত করতে এটি ব্যবহার করতে পারেন:

geo $bad_user {
  default 0;
  1.2.3.4/32 1;
  4.3.2.1/32 1;
}

server {
  if ($bad_user) {
    rewrite ^ http://www.example.com/noscrape.html;
  }
}

এটি $ রিমোট_এডিড্রারের বিপরীতে একটি রেজেক্স চালানোর চেয়ে দক্ষ এবং বজায় রাখা সহজ।


আপনাকে অনেক ধন্যবাদ - এটি জিও ব্যবহার করে দুর্দান্ত কাজ করে! কেবল একটি জিনিস: এটি কেবলমাত্র ডোমেইন ডটকম-এ অনুরোধগুলি পুনঃনির্দেশ করে এবং সরাসরি অনুরোধগুলির মতো ডোমেইন.com/file.ext বা ডোমেইন.com/subdirectory/file.ext নয়। আমি কীভাবে এটি অর্জন করব? দুর্ভাগ্যক্রমে, আমি বেশ রেজিএক্স নুব :(
অ্যালেক্স

কোথায় রাখলে? আপনি কি পুরো সার্ভার ব্লক সরবরাহ করতে পারেন? আরও কিছু চিন্তা করার পরে, যদি সার্ভারে সরাসরি রাখা হয় তবে এটি সেরা ধারণা নয়, যেহেতু এটি /noscrape.html- র অনুরোধের জন্যও মূল্যায়ন করা হবে
kolbyjack

20

এইচটিপিএকসেসমডিউল ব্যবহার করে আপনি এটি দ্রুত ঘটিয়ে তুলবেন

server {
    if ($remote_addr = 1.2.3.4) {
        rewrite ^ http://www.website.com/noscrape.htm;
    }
   ...
}

আপনাকে অনেক ধন্যবাদ, খালেদ! সেই নির্দেশিকায় বেশ কয়েকটি আইপি অন্তর্ভুক্ত করার কোনও উপায় আছে কি?
অ্যালেক্স

দুঃখিত, আমি কিছুটা বিভ্রান্ত (নতুন এখানে) - ম্যাট প্রশ্নটির উত্তর দিয়েছে নাকি খালেদ? যাইহোক, আপনি উভয় ধন্যবাদ! ;)
অ্যালেক্স

1
এটি আসলে পুনর্লিখনের মডিউলটি ব্যবহার করে । আপনি ভালো একটি রেগুলার এক্সপ্রেশন ম্যাচ ব্যবহার করতে পারেন: if ($remote_addr ~ "^(1.2.3.4|4.3.2.1)$")
মিগ্রোর্ভেন

আমার nginx -Vবলে যে এরকম কোনও মডিউল নেই তবে এটি কাজ করে। সম্ভবত এটি আপাতত অন্তর্নির্মিত।
ব্যবহারকারী3132194

1

আপনি যদি একই ডোমেনে কোনও ভিন্ন পৃষ্ঠাতে পুনঃনির্দেশিত হন এবং আপনি যদি উপরের উদাহরণগুলি অনুসরণ করেন তবে এটি সরাসরি লুপের কারণ হবে। সুতরাং আপনার এনগিনেক্স কনফিগারেশন ফাইলটিতে নিম্নলিখিত হিসাবে ব্যবহার করুন (আমি ধরে নিই যে আপনি ওয়ার্ডপ্রেসটি বহুল ব্যবহৃত হিসাবে ব্যবহার করেছেন)

geo $bad_user {
  default 0;
  1.2.3.4/32 1;
  4.3.2.1/32 1;
}

server {
 location /
 {
  if ($bad_user) {
    rewrite ^ http://www.example.com/warning-page/ break;
  }

try_files $fullurl${request_uri}index.html $uri $uri/ /index.php$is_args$args;
 }

location /warning-page/
{
try_files $fullurl${request_uri}index.html $uri $uri/ /index.php$is_args$args;
}

}

এখন যদি কালো তালিকাভুক্ত আইপি থেকে কেউ সতর্কতা-পৃষ্ঠা ব্যতীত অন্য কোনও পৃষ্ঠাতে পরিদর্শন করেছেন যা সাইটে তালিকাভুক্ত নয়, তাদের সতর্কতা পৃষ্ঠায় পুনঃনির্দেশ করা হবে। যেহেতু পুনর্লিখনটি অবস্থান / ব্লকে রয়েছে তাই এটি পুনর্নির্দেশের লুপের কারণ হবে না। তবে এটি যদি সার্ভার ব্লকের অভ্যন্তরে থাকে তবে তা পুনর্নির্দেশের লুপের কারণ হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.