Nginx: হাজার হাজার সার্ভার_নাম


12

কয়েক হাজার বহিরাগত কনফিগারেশন ফাইল তৈরি না করে বা খুব দীর্ঘ সার্ভার_নাম লাইন না লিখে আমি কীভাবে এনগিনেক্সকে হাজার হাজার বিভিন্ন সার্ভার_নামের মধ্যে সীমাবদ্ধ রাখতে পারি?

প্রকৃতপক্ষে, আমি চাই যে Nginx কেবলমাত্র সার্ভার 1 ডটকম, সার্ভার 2 ডটকম ইত্যাদির জন্য একটি বিপরীত প্রক্সি ...

আমার পক্ষে সবচেয়ে ভাল সমাধানটি হ'ল আমার একক বহিরাগত কনফিগারেশন ফাইলটি আমার সীমাবদ্ধ সার্ভার_নামগুলি: সার্ভার 1.com, সার্ভার 2.com ইত্যাদি রয়েছে ...

এটা কি সম্ভব ?


ঠিক আছে, আপনার উত্তরগুলির জন্য আপনাকে ধন্যবাদ, এটি কোনও রেগ ছাড়াই কাজ করে। এক্সপ্রেশন। কলবিজ্যাক দ্বারা বর্ণিত ঠিক একটি বড় সার্ভার_নাম তালিকা। ধন্যবাদ.


আপনার যদি কলবিজ্যাক উত্তরটি গ্রহণ করা উচিত তবে যদি এটিই সাহায্য করে।
ওনিরোই

উত্তর:


19

আপনি নিজেরাই একটি ফাইলের মধ্যে সার্ভার_নামের নির্দেশিকা রাখতে পারেন এবং তারপরে এটি আপনার সার্ভার ব্লক থেকে অন্তর্ভুক্ত করতে পারেন:

# example.com.conf
server {
  include /path/to/server_names;
  ...
}

# /path/to/server_names
server_name
  example.com
  domain.com
  foo.com
;

সার্ভার_নাম ফাইলের জন্য কেবল শীর্ষে সার্ভার_নাম প্রয়োজন এবং; নীচে একটি বৈধ নির্দেশিকা হতে।


আপনি যদি এটি করেন তবে বিলম্ব / অনুসন্ধানে বিলম্ব / র্যাম ব্যবহার থেকে সাবধান থাকুন। আমি অ্যাপাচে বড় তালিকার (প্রায় 5000 টি ServerAliasনির্দেশিকা এবং 16 মিলিয়ন পর্যন্ত Deny from) সাথে কিছু পরীক্ষা করেছি । 5,000 টি ডোমেন একটি পরিমাপযোগ্য তবে ছোট বিলম্ব তৈরি করে। সংখ্যাটি বাড়ানোর সময়, আমি দেখতে পেলাম যে বিলম্বটি প্রায় 50,000 এ লক্ষণীয় হয়ে উঠতে শুরু করেছে। অ্যাপাচি (এবং সম্ভবত এনগিনেক্স সহ) এর সাথেও তালিকাটি র‍্যামে ধারণ করা হয়েছে যার অর্থ যে আমি চেষ্টা করেছি সবচেয়ে বড় সেটটি দিয়ে, আমি আমার উপলব্ধ র্যামের মধ্যে কেবলমাত্র একটি শিশু প্রক্রিয়া শুরু করতে পারি।
লাদাদাদাদা

1
@ লাদাদাদা এলএল। আমি সবেমাত্র চেক করেছি। দিকনির্দেশনায় 100,000 ডোমেনের জন্য এনগিনেক্স 30 এমবি র‌্যাম ব্যবহার করে server_nameএবং প্রতিক্রিয়া জানায়Request rate: 36900.6 req/s (0.0 ms/req)
ভিবার্ট

1
60 এমবি 1 000 000 এর জন্য এবংRequest rate: 34716.8 req/s (0.0 ms/req)
ভিবার্ট

এটি অ্যাপাচি পরিচালিতের চেয়ে যথেষ্ট ভাল, কমপক্ষে প্রিফার্ক এমপিএমের সাথে। জানাশোনা করা
লাড্ডাড্ডা

7

server_nameআপনার ঘোষণা server {}ব্লক একটি রেগুলার এক্সপ্রেশন হতে পারে, তাহলে এটি আপনাকে একটি সেট প্যাটার্ন মধ্যে SERVER_NAME গুলি মেলে করার অনুমতি দেয় হবে।

এ সম্পর্কিত আরও তথ্য এখানে দেখা যাবে: http://nginx.org/en/docs/http/server_names.html#regex_names


আপনাকে ধন্যবাদ, তবে আমি একক নিয়মিত অভিব্যক্তিতে আমার কাস্টম ডোমেন তালিকাটি ঘোষণা করতে পারি না। সার্ভার_নাম [zeus.domain.com | poseidon.domain.com | ইত্যাদি ...]; এটা অনেক দীর্ঘ হবে।
ফ্রেড

1
@ ফ্রেড আপনি একটি উদাহরণ সেট সেট দিতে পারেন? কোনও একটি ডোমেন একেবারে অন্যের মতো না হলে আমি মোটামুটি আত্মবিশ্বাসী যে কোনও রেজেক্স প্যাটার্ন আপনার সমস্যার সমাধান করবে।
ওনিরোই

@ ওনিরোই: উদাহরণস্বরূপ কেস = ব্যবহারকারীর উপ-ডোমেন ব্যবহার করুন। একটি সফটওয়্যার হিসাবে একটি পরিষেবা হিসাবে কল্পনা করুন যেখানে প্রতিটি ব্যবহারকারী তাদের নিজস্ব সাবডোমেন পান এবং আপনি সেগুলি বিভিন্ন সার্ভারে রুট করতে Nginx ব্যবহার করতে চান। সেক্ষেত্রে কোনও ডোমেন একেবারেই অন্যের মতো হয় না।
মিঃসন্তা

@ মিঃসন্তা আহ, ফর্সা পয়েন্ট। সাবডোমেনগুলিতে কিছু সাধারণতা না থাকলে হ্যাঁ রেজেক্স কাজ করবে না। অথবা আপনাকে নিজেরাই ডোমেন থেকে উদ্ভূত রেইজেক্স তৈরি করতে হবে যা এই উদ্দেশ্যটি হারাতে পারে।
ওনিরোই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.