আমার একই মেশিনে বেশ কয়েকটি সার্ভার চলছে, কিছু কেবলমাত্র HTTP সহ, কিছু HTTP এবং https উভয় দিয়ে। মূল কনফিগারেশন ফাইল থেকে অন্তর্ভুক্ত পৃথক ফাইলে সংজ্ঞায়িত বেশ কয়েকটি সার্ভার ব্লক রয়েছে।
আমি HTTP- র জন্য একটি "ডিফল্ট" সার্ভার সেট আপ করেছি যা অনুরোধগুলির জন্য একটি জেনেরিক "রক্ষণাবেক্ষণ পৃষ্ঠা" পরিবেশন করবে যা অন্য কনফিগার ফাইলে অন্য কোনও সার্ভার_নামের সাথে মেলে না। Http ডিফল্ট সার্ভারটি প্রত্যাশিত হিসাবে কাজ করে, এটি সার্ভার_নাম "_" ব্যবহার করে এবং এটি অন্তর্ভুক্তের তালিকায় প্রথম প্রদর্শিত হয় (কারণ আমি লক্ষ্য করেছি যে সার্ভারের জুড়ে সদৃশ সার্ভার_নামের ক্ষেত্রে, প্রথম যেটি প্রদর্শিত হবে তা ব্যবহৃত হবে) is এটি দুর্দান্ত কাজ করে।
আমি একই সঠিক সার্ভার ব্লকটি প্রত্যাশা করব (কেবল "শোনুন 80 ডিফল্ট_সার্ভার" "শুনুন 443 ডিফল্ট_সরভার" এবং পৃষ্ঠার পরিবর্তে "রিটার্ন 444" সরবরাহ করার জন্য) তবে তা না হয়। পরিবর্তে, এটি প্রদর্শিত হয় যে নতুন ডিফল্ট https সার্ভারটি প্রকৃতপক্ষে আগত সমস্ত https সংযোগগুলি দখল করছে এবং সেগুলি ব্যর্থ করে দিচ্ছে, যদিও অন্যান্য সার্ভার ব্লকগুলিতে আগত অনুরোধগুলির জন্য আরও উপযুক্ত সার্ভার_নাম রয়েছে। নতুন ডিফল্ট https সার্ভার অপসারণের ফলে আধা-সঠিক আচরণ পুনরায় শুরু হবে: https সহ সমস্ত ওয়েবসাইট সঠিকভাবে লোড হবে; তবে https ব্যতীত সমস্ত ওয়েবসাইটগুলিকে অন্তর্ভুক্ত করা ফাইলগুলির মধ্যে প্রথম https সার্ভারে স্থানান্তরিত করা হবে (যা ডক্স অনুসারে, যদি কোনও "ডিফল্ট_সার্ভার" প্রদর্শিত না হয়, তবে প্রদর্শিত প্রথম সার্ভার ব্লকটি "ডিফল্ট" হবে)।
সুতরাং আমার প্রশ্নটি হল, এসএসএল সংযোগের জন্য এনগিনেক্সে একটি "ডিফল্ট সার্ভার" সংজ্ঞায়নের সঠিক উপায়টি কী? কেন এমন হয় যে যখন আমি স্পষ্টভাবে একটি "ডিফল্ট_সভার" সেট করি তখন এটি লোভী হয়ে যায় এবং সমস্ত সংযোগ ধরে ফেলে যখন আমি যখন স্পষ্টতই এনজিনেক্সকে "ডিফল্ট সার্ভার" সিদ্ধান্ত নিতে দেই তবে এটি যেমনটি প্রত্যাশা করতাম (ভুল সার্ভারটি ডিফল্ট হিসাবে সেট করা এবং অন্যান্য প্রকৃত সার্ভার সহ) সঠিক আচরণ করছেন)?
এখানে আমার "ডিফল্ট সার্ভার" রয়েছে। এইচটিটিপি অন্যান্য সার্ভারগুলি না ভেঙে কাজ করে। এইচটিপিএস অন্যান্য সার্ভারগুলি ভেঙে দেয় এবং সমস্ত ব্যবহার করে।
server {
listen 443 ssl default_server;
server_name _;
access_log /var/log/nginx/maintenance.access.log;
error_log /var/log/nginx/maintenance.error.log error;
return 444;
}
server {
listen *:80 default_server;
server_name _;
charset utf-8;
access_log /var/log/nginx/maintenance.access.log;
error_log /var/log/nginx/maintenance.error.log error;
root /home/path/to/templates;
location / {
return 503;
}
error_page 503 @maintenance;
location @maintenance {
rewrite ^(.*)$ /maintenance.html break;
}
}
আপনারা কেউ কি দেখতে পাচ্ছেন যে এখানে কী ভুল হতে পারে?