nginx বড় কনফিগারেশন ফাইল বিভক্ত


17

আমার এনজিএনএক্স ডিফল্ট কনফিগারেশন ফাইলটি বিশাল আকার ধারণ করছে। আমি এটিকে ছোট কনফিগার ফাইলগুলিতে বিভক্ত করতে চাই, প্রতিটিতে একটি করে কেবলমাত্র এক, সর্বোচ্চ 4 টি অবস্থান অন্তর্ভুক্ত, যাতে আমি এগুলি দ্রুত সক্ষম / অক্ষম করতে পারি।

আসল ফাইলটি এর মতো দেখাচ্ছে:

server {
    listen 80 default_server;
    root /var/www/

    location /1 {
        config info...;
    }

    location /2 {
        config info....;
    }        
    location /abc {
        proxy_pass...;
    }

    location /xyz {
        fastcgi_pass....;
    }
    location /5678ab {
        config info...;
    }

    location /admin {
        config info....;
    }

এখন, আমি যদি প্রতিটি ফাইলটিতে কয়েকটি সংখ্যক স্থান (একত্রে অন্তর্ভুক্ত অবস্থানগুলি) পর্যন্ত বিভক্ত করতে চাই, তবে বিশৃঙ্খলা সৃষ্টি না করে এটি করার উপযুক্ত উপায় কী হবে (প্রতিটি ফাইলের মধ্যে মূল ঘোষণা করার মতো, অতএব অদ্ভুত পথ রয়েছে) ফাইলগুলি অনুসন্ধান করার চেষ্টা করে)?

উত্তর:


24

আপনি সম্ভবত এনগিনেক্সের includeফাংশন সন্ধান করছেন: http://nginx.org/en/docs/ngx_core_module.html# অন্তর্ভুক্ত

আপনি এটি এর মতো ব্যবহার করতে পারেন:

server {
  listen 80;
  server_name example.com;
  […]
  include conf/location.conf;
}

অন্তর্ভুক্ত এছাড়াও ওয়াইল্ডকার্ড গ্রহণ করে যাতে আপনি লিখতে পারেন

include include/*.conf;

ডিরেক্টরিতে প্রতিটি * .conf ফাইল অন্তর্ভুক্ত করতে অন্তর্ভুক্ত


আমি এটি ইতিমধ্যে বিবেচনা করেছি তবে এড়িয়ে গেছি, কারণ এটির অর্থ সাইট-সক্ষম ফোল্ডারে কেবল ফাইলগুলি লিঙ্কযুক্ত না করে ফাইল সামগ্রীগুলি সম্পাদনা করা উচিত।
oliverjkb

@ আরদুকার তাই আপনার সমাধানটি কি সাইটগুলি সক্ষম ফোল্ডারটি ব্যবহার করা ছিল?
মার্ক স্টসবার্গ

আমি এখনই কিছুটা বিভ্রান্ত ...
এফএলএক্সএন

এত দেরিতে উত্তর দেওয়ার জন্য দুঃখিত! দেখে মনে হচ্ছে আমি বিজ্ঞপ্তিটি পড়ি নি .. -.- আমি ইতিমধ্যে FLXN এর সমাধানটি ব্যবহার করছি। তবে তা আমাকে খুশি করে না। যেহেতু আমি একটি ছোট সংস্থার জন্য একটি সার্ভার তৈরি করছি, যেখানে প্রশাসন সম্পূর্ণ ব্রাউজারের মাধ্যমে করা হয়, আমি কোনও ফাইলে পরিবর্তন করতে চাই না। ব্রাউজারের মাধ্যমে যদি কোনও পরিষেবা নিষ্ক্রিয় করা হয়, তবে আমি চাই যে এনজিএনএক্সের সাবফোল্ডার (বলুন 'অবস্থান' )টিও নিষ্ক্রিয় করা হোক, তাই সাইট-সক্ষম ফোল্ডারে কনফিগার ফাইলটি লিঙ্কযুক্ত করা ভাল ধারণা বলে মনে হয়।
oliverjkb

6

আপনি এর সাথে সাইট ফোল্ডার তৈরি করতে পারেন

mkdir -p /etc/nginx/sites-available /etc/nginx/sites-enabled

# এবং তারপরে আপনার বড় your_config.confফাইলটিকে ছোট ফাইলগুলিতে ভাগ করুন sites-available/:

YOURCONF="/etc/nginx/conf.d/your_config.conf"
cd /etc/nginx
mkdir -p sites-available sites-enabled
cd  sites-available/
csplit "$YOURCONF" '/^\s*server\s*{*$/' {*}
for i in xx*; do
  new=$(grep -oPm1 '(?<=server_name).+(?=;)' $i|sed -e 's/\(\w\) /\1_/g'|xargs);
  if [[ -e $new.conf ]] ; then
    echo "" >>$new.conf
    cat "$i">>$new.conf
    rm "$i"
  else
    mv "$i" $new.conf
  fi
done

(আমি এই উত্স থেকে এটি বাড়িয়েছি: /programming//a/9635153/1069083 )

এটি httpআপনার ব্লকের ভিতরে শেষে যুক্ত করার বিষয়ে নিশ্চিত হন /etc/nginx/conf.d/*.conf;:

include /etc/nginx/sites-enabled/*.conf; 

দ্রষ্টব্য: serverব্লকের বাইরে থাকা মন্তব্যগুলি প্রতিটি ফাইলের নীচে কাটা হয়, সুতরাং serverব্লকের আগে কোনও মন্তব্য করা উচিত নয় । পরিবর্তে প্রথম লাইনে মন্তব্যগুলি সরিয়ে নিন block

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