Nginx এর জন্য conf.d ডিরেক্টরি বনাম সাইট-উপলভ্য জন্য বিভিন্ন ব্যবহার কী


98

আমার লিনাক্স ব্যবহার করার কিছু অভিজ্ঞতা আছে তবে এনজিনেক্স ব্যবহার করে কেউই নেই। আমাকে একটি অ্যাপ্লিকেশন সার্ভারের জন্য লোড-ব্যালেন্সিং বিকল্পগুলি নিয়ে গবেষণা করার দায়িত্ব দেওয়া হয়েছে।

আমি এনজিএনএক্স ইনস্টল করতে অ্যাপটি-গেট ব্যবহার করেছি এবং সব ঠিক আছে বলে মনে হচ্ছে।

আমার কিছু প্রশ্ন আছে.

সাইটগুলি উপলভ্য ফোল্ডার এবং কনফিড ডি ফোল্ডারের মধ্যে পার্থক্য কী। এই দুটি ফোল্ডারই এনজিএনএক্সের জন্য ডিফল্ট কনফিগারেশন সেটআপে অন্তর্ভুক্ত ছিল। টিউটোরিয়াল উভয় ব্যবহার। তারা কি জন্য এবং সর্বোত্তম অনুশীলন কি?

সাইট-সক্ষম ফোল্ডারটি কীসের জন্য ব্যবহৃত হয়? আমি কিভাবে এটা ব্যবহার করব?

ডিফল্ট কনফিগারেশন একটি www- ডেটা ব্যবহারকারী উল্লেখ? আমার কি সেই ব্যবহারকারী তৈরি করতে হবে? এনজিএনএক্স চলার জন্য আমি কীভাবে সেই ব্যবহারকারীর সর্বোত্তম অনুমতি দেব?


প্রশ্ন জিজ্ঞাসা করার সময় স্কোপ ক্রাইপ এড়ানোর চেষ্টা করুন; www-dataএকটি পৃথক বিষয়। বেশিরভাগ অপারেটিং সিস্টেমগুলি পৃথক ব্যবহারকারীকে নিম্ন অনুমোদনের সাথে সংজ্ঞায়িত করে যে প্রক্রিয়াটি পোর্ট 80 কে রুট হিসাবে আবদ্ধ করার পরে চলতে পারে। এটি কনফিগার ফাইলে সংজ্ঞায়িত করা হয়েছে। সেখান থেকে প্রাথমিক সুরক্ষা অনুশীলনগুলি প্রয়োগ করুন; ব্যবহারকারীকে এমন কোনও কিছুতে লিখতে দেবেন না যা ওয়েবসার্ভারকে লেখার দরকার নেই, অন্য ব্যবহারকারীদের যদি ইচ্ছাকৃতভাবে না লিখেন তবে ফাইলগুলিতে লিখতে দেবেন না।
অ্যান্ড্রু বি

উত্তর:


93

সাইটগুলি * * ফোল্ডারগুলি পরিচালনা করে nginx_ensiteএবং nginx_dissite। অ্যাপাচি এইচডিডি ব্যবহারকারীদের জন্য যারা এটি অনুসন্ধানের সাথে খুঁজে পান, সমতুল্য a2ensite/ হয় a2dissite

sites-availableফোল্ডারের জমা করার জন্য হয় সব আপনার vhost দেখুন কনফিগারেশনের হোক বা না হোক তারা বর্তমানে সক্ষম করছি।

sites-enabledফোল্ডারের সাইট-উপলব্ধ ফোল্ডারে ফাইলগুলিতে symlinks ধারণ করে। এটি আপনাকে সিলেমিংকটি অপসারণ করে নির্বাচিতভাবে vhosts অক্ষম করতে দেয়।

conf.dকাজটি করে, তবে আপনাকে যখন কোনও কিছু অক্ষম করার দরকার হয় তখন আপনাকে ফোল্ডারটির বাইরে কিছু সরিয়ে নিতে হবে, মুছে ফেলতে হবে বা এর মধ্যে পরিবর্তন আনতে হবে। সাইটগুলি- * ফোল্ডার বিমূর্তি জিনিসগুলিকে কিছুটা আরও সংগঠিত করে তোলে এবং আপনাকে পৃথক সমর্থন স্ক্রিপ্টগুলির সাহায্যে এগুলি পরিচালনা করতে দেয়।

(যদি আপনি আমার মত না হন এবং অনেকগুলি ডেবিয়ান অ্যাডমিনের একজন যিনি সিম্পলিংকগুলি সরাসরি পরিচালনা করেছেন, স্ক্রিপ্টগুলি সম্পর্কে জেনে নেই ...)


12
আমি কি কিছু ভুল পেয়েছি? ডাউনভোট বুঝতে পারছি না।
অ্যান্ড্রু বি

1
আমি কৌতুহল এই nginx মধ্যে নির্মিত? আমি ম্যানুয়ালি github.com/perusio/nginx_ensite
lfender6445

18
এটি লক্ষ্য করা গুরুত্বপূর্ণ যে sites-available|sites-enabledএটি একটি ডেবিয়ান-ইসেম এবং এটি এনজিনেক্স বা অ্যাপাচি কিছু করে না। এটি সম্ভবত অতীতে বেশ কার্যকর ছিল তবে কনফিগারেশন পরিচালনা এবং পাত্রে যুগে যুগে এর ইউটিলিটি কিছুটা সীমাবদ্ধ।
মাইকেল হ্যাম্পটন

আপনি কী মন্তব্য করতে পারেন যে কনফিগারেশন পরিচালনা এবং পাত্রে কীভাবে সাইটগুলি উপলভ্য | সাইট-সক্ষমিত ব্যবহারের সীমাবদ্ধতা রয়েছে?
কার্তিক ভি

1
@ কার্তিকভির বক্তব্যটি হ'ল আজকাল সার্ভারগুলি প্রায়শই সংক্ষিপ্ত কনটেইনার হিসাবে উপস্থিত হয় যা কেবলমাত্র একটি ওয়েবসাইট / পরিষেবা পরিবেশন করে, সুতরাং nginx.confএটি কোনও পাঠযোগ্যতার ক্ষতি ছাড়াই অন্তর্ভুক্ত করা যেতে পারে । কয়েক বছর আগে যখন সার্ভারগুলি সাধারণত দশগুলি ওয়েবসাইট সঞ্চয় করে from
অ্যাডামকজি

38

আমি পূর্ববর্তী উত্তরগুলিতে যোগ করতে চাই যে সর্বাধিক গুরুত্বপূর্ণ হল আপনি ডিরেক্টরিগুলি কীভাবে কল করবেন না (যদিও এটি একটি খুব দরকারী কনভেনশন) তবে আপনি আসলে কী রেখেছিলেন nginx.conf। উদাহরণ কনফিগারেশন:

http {
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*.conf;
    include /etc/nginx/sites-enabled/my_own_conf;
...
}

এখানে ব্যবহৃত একমাত্র নির্দেশের অন্তর্ভুক্ত রয়েছে , সুতরাং উদাহরণস্বরূপ conf.d/এবং এর মধ্যে কোনও অভ্যন্তরীণ পার্থক্য নেই sites-enabled/

উপরের ডকুমেন্টেশন থেকে:

Syntax:     include file | mask;
Default:    —
Context:    any

Includes another file, or files matching the specified mask, 
into configuration. Included files should consist of 
syntactically correct directives and blocks.

সুতরাং, মূল প্রশ্নের উত্তর দেওয়ার জন্য: কোনও অভ্যন্তরীণ পার্থক্য নেই এবং আপনি অন্যান্য উত্তরের পরামর্শের কথা স্মরণ করে এটিকে সর্বোত্তম উপায়ে ব্যবহার করতে পারেন। এবং দয়া করে, 'সঠিক' উত্তরটি নির্বাচন করতে ভুলবেন না।


1
ডান, sites-enabledকিছুটা ডিট্রিবিউশন দ্বারা উদ্ভাবিত হয়েছে, বিরক্তিকর মধ্যস্থতাকারী হিসাবে চারপাশে ঝলকানি। অফিসিয়াল উত্স থেকে গ্র্যাজ এনজিনেক্সে যান : আপনি একটি যুগোপযোগী পণ্য পাবেন, পাশাপাশি এই কনফিগারেশন ক্র্যাপ / নরক থেকে মুক্তি পাবেন।
বার্নার্ড রোসেট

2
এটি ব্যাখ্যা করে যে সরকারী Nginx ডকুমেন্টেশনে এই নাম কনভেনশনটির কেন একটি একক রেফারেন্স নেই। এটি তৃতীয় পক্ষের প্রকল্প! github.com/perusio/nginx_ensite
এক্সএফেক্ট

30

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

conf.dমডিউল লোডিং, লগ ফাইলগুলি এবং একক ভার্চুয়াল হোস্টের জন্য নির্দিষ্ট নয় এমন অন্যান্য জিনিসের জন্য ব্যবহার করুন things

ডিফল্ট কনফিগারেশন একটি www- ডেটা ব্যবহারকারী উল্লেখ? আমার কি সেই ব্যবহারকারী তৈরি করতে হবে?

আপনার নন-রুট ব্যবহারকারী হিসাবে চালানো উচিত should এটি কিছু ক্ষেত্রে নাম দেওয়া হয়েছে www-data, তবে আপনি নিজের ইচ্ছামত যে কোনও নাম রাখতে পারেন।

এনজিএনএক্স চলার জন্য আমি কীভাবে সেই ব্যবহারকারীর সর্বোত্তম অনুমতি দেব?

আমি এই প্রশ্নের উত্তর সম্পর্কে কিছুটা কম জানি (আমি এই মুহুর্তে এনজিনেক্স চালাচ্ছি না), তবে এটি যদি অ্যাপাচি-এর মতো কিছু হয় তবে উত্তরটি হ'ল www-dataব্যবহারকারীকে কেবল কোনও স্থির ফাইলগুলিতে পড়ার অনুমতি প্রয়োজন (এবং ডিরেক্টরিগুলিতে + এক্সিকিউট করা পড়ুন) ) যা আপনি পরিবেশন করছেন বা সিজিআই স্ক্রিপ্টগুলির মতো জিনিসগুলিতে অনুমতি পড়ুন / সম্পাদন করুন এবং অন্য কোথাও অনুমতি নেই।


1
বৈধ শেল রেকর্ড অপসারণ করে এই ব্যবহারকারীর জন্য লগইন সক্ষমতা অক্ষম করার কারণে ওয়েব সার্ভার চালনার জন্য ডেডিকেটেড ব্যবহারকারী থাকাও গুরুত্বপূর্ণ।
ডিউকলিয়ন

> 'আপনার অ-রুট ব্যবহারকারী হিসাবে এনজিনেক্স চালানো উচিত' - আপনি এই সম্পর্কে আরও বিস্তারিত বলতে পারেন?
lfender6445

1
অপ্রত্যাশিত ব্যবহারকারী হিসাবে চালানো কোনও ক্ষয়ক্ষতির একটি উপায় যা দূরবর্তী সমঝোতার ফলে হতে পারে। আপনি যদি কোনও ওয়েবসারভার হিসাবে চালাচ্ছেন rootএবং কোনও ধরণের দূরবর্তী আপস হয় তবে আক্রমণকারীটির সাথে সাথে সিস্টেমে সম্পূর্ণ অ্যাক্সেস থাকে। কোনও অনিচ্ছাকৃত ব্যবহারকারী হিসাবে চলাকালীন প্রশাসনিক অ্যাক্সেস কেবলমাত্র একরকম স্থানীয় শোষণের সাথে মিলিয়ে পাওয়া যাবে।
16-10 টায় লার্স্ক

14

কি হচ্ছে?

আপনার অবশ্যই ডেবিয়ান বা উবুন্টু ব্যবহার করা উচিত, যেহেতু http://nginx.org/packages/ থেকে এনজিনেক্সের প্রবাহ প্যাকেজিং দ্বারা অশুভ sites-available / sites-enabledযুক্তি ব্যবহার করা হয় না ।

উভয় ক্ষেত্রেই, উভয়ই মানক includeনির্দেশিকার সহায়তায় কনফিগারেশন কনভেনশন হিসাবে প্রয়োগ করা হয় /etc/nginx/nginx.conf

/etc/nginx/nginx.confএনজিএনএক্স.আরজি থেকে এনজিন্সের অফিশিয়াল আপস্ট্রিম প্যাকেজটির একটি স্নিপেট এখানে রয়েছে:

http {
    …
    include /etc/nginx/conf.d/*.conf;
}

এখানে /etc/nginx/nginx.confদেবিয়ান / উবুন্টুর একটি স্নিপেট রয়েছে :

http {
    …
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

সুতরাং, এনজিআইএনএক্সের দৃষ্টিকোণ থেকে, কেবলমাত্র তফাতটি হ'ল ফাইলগুলি conf.dশীঘ্রই প্রক্রিয়া করা হবে এবং যেমন, আপনার যদি এমন কনফিগারেশন রয়েছে যা নিঃশব্দে একে অপরের সাথে বিরোধ করে, তবে সেই ফাইলগুলি conf.dসেগুলির মধ্যে অগ্রাধিকার নিতে পারে sites-enabled


সেরা অনুশীলন হয় conf.d

আপনার ব্যবহার করা উচিত /etc/nginx/conf.d, কারণ এটি একটি আদর্শ সম্মেলন, এবং যে কোনও জায়গায় কাজ করা উচিত।

আপনার যদি কোনও সাইট নিষ্ক্রিয় করার দরকার হয় তবে কেবল ফাইল নামটির পুনরায় নামকরণ করুন এর জন্য .confপ্রত্যয়, খুব সহজ, সরল ও ত্রুটি-প্রমাণ নেই:

sudo mv -i /etc/nginx/conf.d/default.conf{,.off}

অথবা কোনও সাইট সক্ষম করার জন্য বিপরীত :

sudo mv -i /etc/nginx/conf.d/example.com.conf{.disabled,}


sites-availableএবং sites-enabledসমস্ত ব্যয় এড়ানো ।

আমি একেবারে কোন কারণ দেখতে ব্যবহার করা sites-available/ sites-enabled:

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

  • এবং যদি আপনি স্ক্রিপ্টগুলি ব্যবহার করেন না (যা আসলে উপরে একটি স্মার্ট পছন্দ) তবে আপনি কীভাবে সাইটগুলি পরিচালনা করবেন তা নিয়ে একটি সমস্যা আসে:

    • আপনার কাছ থেকে প্রতীকী লিঙ্ক তৈরি না sites-availableকরার জন্য sites-enabled?
    • ফাইলগুলি কপি করবেন?
    • ফাইলগুলি সরান?
    • জায়গায় জায়গায় ফাইলগুলি সম্পাদনা করবেন sites-enabled?

উপরের অংশটিকে কিছুটা ছোট ছোট সমস্যার সমাধান হতে পারে, যতক্ষণ না বেশ কয়েক জন লোক সিস্টেম পরিচালনা করা শুরু করে, বা আপনি যতক্ষণ না কোনও দ্রুত সিদ্ধান্ত নেবেন, কেবল কয়েক মাস বা কয়েক বছর ধরে ভুলে যাবেন না ...

যা আমাদের এনেছে:

  • এটি থেকে কোনও ফাইল সরানো নিরাপদ sites-enabled? এটি কি নরম লিঙ্ক? একটি শক্ত লিঙ্ক? নাকি কনফিগারেশনের একমাত্র অনুলিপি? কনফিগারেশন নরকের একটি প্রধান উদাহরণ।

  • কোন সাইটগুলি অক্ষম করা হয়েছে? (এর সাথে conf.d, .conf- find /etc/nginx/conf.d -not -name "*.conf"বা ব্যবহারের শেষ হয় না এমন ফাইলগুলির জন্য কেবল একটি বিপরীতমুখী অনুসন্ধান করুন grep -v))

শুধু উপরের সব, কিন্তু মনে রাখবেন নির্দিষ্ট includeDebian / Ubuntu- দ্বারা ব্যবহৃত নির্দেশ - /etc/nginx/sites-enabled/*- কোনো ফাইলের নাম প্রত্যয় জন্য নির্দিষ্ট করা sites-enabled, জন্য অসদৃশ conf.d

  • এর মানে হল এই যে যদি এক দিন আপনি দ্রুত একটি ফাইল বা দুই মধ্যে সম্পাদনা করার সিদ্ধান্ত নেন হয় /etc/nginx/sites-enabledআপনার, আর emacsএকটি ব্যাকআপ ফাইল তৈরি করে মত default~, তারপর, হঠাৎ, আপনি উভয় আছে defaultএবং default~সক্রিয় কনফিগারেশন, যা ব্যবহার নির্দেশনা নির্ভর করে, এমনকি হতে পারে না অন্তর্ভুক্ত আপনার কোনও সতর্কতা রয়েছে, এবং দীর্ঘায়িত ডিবাগিং সেশনটি ঘটবে। (হ্যাঁ, এটি আমার সাথে ঘটেছিল; এটি হ্যাকাথনের সময় হয়েছিল এবং আমার বিভ্রান্তি কেন কাজ করছে না তা নিয়ে আমি পুরোপুরি বিস্মিত হয়েছিলাম।)

সুতরাং, আমি নিশ্চিত যে sites-enabledশুদ্ধ মন্দ!


উপরের সমস্তটি ছাড়াও, স্পষ্টতই, ভুল চিহ্ন তৈরি করাও খুব সাধারণ! stackoverflow.com/a/14107803/1122270 ঠিক যদি আপনি মনে করেন না যে sites-enabledযথেষ্ট মন্দ ছিল!
সিএনটি

বা, কখনও কখনও, এমনটি ঘটতে পারে যে কেউ ফাইলগুলি সম্পাদনা করার সিদ্ধান্ত নিয়েছে sites-enabled, তবুও অন্য একজন ব্যক্তি মুছে ফেলার মাধ্যমে এটি অক্ষম করার সিদ্ধান্ত নেন, সম্ভবত এটি ভেবেছিলেন এটি কেবল একটি সিমলিংক ছিল, যার ফলে কনফেরফ ফাইলটি পুনরুদ্ধারের জন্য পরবর্তীকালে এনজিনেক্সের হিমের মেমরি ডাম্প প্রয়োজন: stackoverflow.com/q/45852224/1122270
cnst

আমার সম্পর্কে sites-availableএবং এই দাবির সাথে আমার একমত হতে হবে না sites-enabled; 'লাইভ' পিকআপ ডিরেক্টরিটির বাইরের কনফিগারেশন ফাইলগুলি প্রস্তুত করতে সক্ষম হওয়া জরুরী, যদি এনজিএনএক্স পুনরায় লোড করা হয় বা পুনরায় চালু করা হয় যে এটি আংশিক কনফিগারেশন ফাইলগুলি গ্রহণ করবে না। এটি কনফিগার করা ফাইলগুলি রাখতে কার্যকর হতে পারে যা সক্রিয় ব্যবহারে আর নেই। আইএমওতে প্রথম স্থানে এনজিনেক্স পরিচালনার জন্য পর্যাপ্ত অভিজ্ঞতা থাকলে সিমলিংকগুলি তৈরি করা কোনও বিশেষ কাজ নয়।
BE77Y

@ BE77Y আপনি আরও জটিল পদ্ধতি গ্রহণ করছেন। প্রোগ্রামিংয়ে, অব্যবহৃত কোডটি সম্পূর্ণরূপে সরিয়ে ফেলার পক্ষে এটি সর্বোত্তম অনুশীলন হিসাবে বিবেচিত হয়, কেবল এটি অক্ষম বা মন্তব্য করে নয়; আমি ডিওওপ্সের আলাদা হওয়ার কোনও কারণ দেখছি না - যদি কোনও কনফিগারেশন আর প্রয়োজন না হয় তবে এটি সরান (এটি এখনও আপনার ভিসিএসে থাকা উচিত)। আংশিক কনফারেন্স ফাইলগুলির একই - আপনি কেন এগুলি সক্ষম করবেন এবং আপনার পিছনে পিছনে nginx পুনরায় লোড করেছেন? ( USR1, যা লগগুলি পুনরায় খোলে, কনফিডটি পুনরায় লোড করে না)) আপনার সিমিলিঙ্কটি "অভিজ্ঞতা" মন্তব্যগুলি ভুলভাবে নির্দেশিত পেয়েছি - সমস্যাটি ধারাবাহিকতার বিষয়, যার অভিজ্ঞতার সাথে খুব কমই সম্পর্ক রয়েছে।
সিএনটি

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