রেজেক্স এবং অন্তর্ভুক্ত ফাইল উভয়ই ভাল পদ্ধতি এবং আমি প্রায়শই সেগুলি ব্যবহার করি। তবে অন্য বিকল্পটি হ'ল "নামকরণ করা অবস্থান" ব্যবহার করা, যা অনেক পরিস্থিতিতে একটি কার্যকর পদ্ধতির - বিশেষত আরও জটিল। সরকারী পৃষ্ঠা "যদি মন্দ হয়" শো মূলত একটি ভালো উপায় কিছু করার হিসাবে নিম্নলিখিত:
error_page 418 = @common_location;
location /first/location/ {
return 418;
}
location /second/location/ {
return 418;
}
location @common_location {
# The common configuration...
}
এই বিভিন্ন পদ্ধতির সুবিধা এবং অসুবিধা রয়েছে। রিজেক্সের একটি বড় সুবিধা হ'ল আপনি ম্যাচের অংশগুলি ক্যাপচার করতে এবং প্রতিক্রিয়াটি পরিবর্তন করতে সেগুলি ব্যবহার করতে পারেন। অবশ্যই, আপনি মূল ব্লকে একটি ভেরিয়েবল সেট করে বা ব্যবহার করে অন্যান্য পদ্ধতির সাথে একইরকম ফলাফল অর্জন করতে পারেন map
। রেজেক্স পদ্ধতির খারাপ দিকটি হ'ল যদি আপনি বিভিন্ন অবস্থানের সাথে মেলে রাখতে চান তবে এটি অযৌক্তিক হতে পারে, সাথে সাথে কোনও রেজেক্সের কম নজির আপনি কীভাবে লোকেশনগুলি মেলাতে চান তার সাথে এটি খাপ খায় না - উল্লেখযোগ্যভাবে বলা যায় না যে এখানে পারফরম্যান্সের প্রভাব রয়েছে কিছু ক্ষেত্রে regexes থেকে।
ফাইলগুলি অন্তর্ভুক্ত করার মূল সুবিধা (যতদূর আমি বলতে পারি) এটি হ'ল আপনি কী কী অন্তর্ভুক্ত করতে পারেন সে সম্পর্কে এটি কিছুটা নমনীয় - উদাহরণস্বরূপ এটি একটি সম্পূর্ণ লোকেশন ব্লক হওয়ার দরকার নেই। তবে এটি নামমাত্র অবস্থানগুলির তুলনায় কেবল বিষয়গতভাবে কিছুটা ক্লানকিয়ার।
এছাড়াও নোট করুন যে এখানে একটি সম্পর্কিত সমাধান রয়েছে যা আপনি অনুরূপ পরিস্থিতিতে ব্যবহার করতে সক্ষম হতে পারেন: নেস্টেড অবস্থানগুলি। ধারণাটি হ'ল আপনি খুব সাধারণ অবস্থানের সাথে শুরু করবেন, সম্ভাব্য কয়েকটি ম্যাচে সাধারণভাবে কিছু কনফিগারেশন প্রয়োগ করবেন এবং তারপরে বিভিন্ন ধরণের পাথের জন্য পৃথক নেস্টেড লোকেশন পাবেন যা আপনি মেলাতে চান। উদাহরণস্বরূপ, এটির মতো কিছু করা কার্যকর হতে পারে:
location /specialpages/ {
# some config
location /specialpages/static/ {
try_files $uri $uri/ =404;
}
location /specialpages/dynamic/ {
proxy_pass http://127.0.0.1;
}
}