একটি একক প্রবাহের সার্ভার পুনরায় চেষ্টা করার জন্য এনজিনেক্স কনফিগার করা


14

আমি বিপরীত প্রক্সি হিসাবে nginx ব্যবহার করছি এবং আমি চাই যে এটি বেশ কয়েকটি সেকেন্ড অপেক্ষা করে এবং আপস্ট্রিম সার্ভার সাড়া না দিলে একটি অনুরোধ পুনরায় চেষ্টা করবে। এইভাবে আমি আমার আপস্ট্রিম সার্ভারটি পুনরায় চালু করতে পারি এবং ব্যবহারকারীরা 502 টি খারাপ গেটওয়ে দেখার পরিবর্তে তাদের ব্রাউজারগুলি কেবল কয়েক সেকেন্ডের জন্য স্তব্ধ থাকে (পুনঃসূচনা প্রক্রিয়াটি 3 বা 4 সেকেন্ড সময় নেয়)। আমি কয়েকটি জিনিস চেষ্টা করেছি, এটি আমার সার্ভার ব্লকে রেখেছি:

proxy_connect_timeout 60;
proxy_send_timeout 15;
proxy_read_timeout 20;

তবে কিছুই করার মনে হয় নি। আমি এটিকে প্রবাহের ব্লকে যুক্ত করার চেষ্টা করেছি:

server 127.0.0.1:3001 fail_timeout=10s;

আবার, আমি যা চেয়েছিলাম তা নয়

এটা কি সম্ভব? আমি কী মিস করছি?

উত্তর:


1

আপনি যে নির্দেশনাগুলির চেষ্টা করেছেন তা আপনার ইচ্ছার চেয়ে বিভিন্ন কিছুর জন্য। তাদের ডকুমেন্টেশন পড়ুন।

upstreamনির্দেশ ডকুমেন্টেশন পুঙ্খানুপুঙ্খভাবে ব্যাখ্যা একটি আপস্ট্রিম ব্লক কাজ করে:

যদি কোনও সার্ভারের সাথে যোগাযোগের সময় কোনও ত্রুটি দেখা দেয় তবে অনুরোধটি পরবর্তী সার্ভারে প্রেরণ করা হবে এবং যতক্ষণ না সমস্ত কার্যকরী সার্ভারের চেষ্টা করা হবে। যদি কোনও সার্ভার থেকে একটি সফল প্রতিক্রিয়া পাওয়া যায় নি, ক্লায়েন্টটি সর্বশেষ সার্ভারের সাথে যোগাযোগের ফলাফল পাবে।

সবকিছু সেখানে বলেছে।

তবে আপনি ব্যাকএন্ড থেকে এটির সাথে বাধা পেয়ে ফিরে আসা ত্রুটি কোডটি প্রক্রিয়া করতে সক্ষম হবেন proxy_intercept_errorsএবং তারপরে $request_uriমূল ক্লায়েন্টের পক্ষে এটির একটি বিশেষ স্ক্রিপ্টে প্রেরণ করুন ।

বেসলাইনটি হ'ল ক্লায়েন্ট-সাইড (বা ফ্রন্ট্যান্ড-সাইড) পুনরায় চেষ্টা করতে আপনার কিছু কোড / অ্যাপ্লিকেশন যুক্তি প্রয়োজন need


0

অন্য উত্তরে যেমন বলা হয়েছে, এনজিনেক্স এটি করার কোনও অন্তর্নির্মিত উপায় নেই। একটি সম্ভাব্য সমাধান হ'ল আপনার বর্তমান সার্ভারের সমন্বিত লোড-ব্যালেন্সিং সেটআপ এবং একটি ব্যাকআপ সার্ভার ব্যবহার করা যা সমস্ত অনুরোধের জন্য নিম্নলিখিতটি করে:

  • অনলাইনে ফিরে না আসা পর্যন্ত আপনার বর্তমান সার্ভারটি পোল করুন
  • তারপরে 302 বা অন্য পুনর্নির্দেশের সাথে প্রতিক্রিয়া জানায় যাতে ব্রাউজারটি আবার চেষ্টা করে

এই সার্ভারটি 'ব্যাকআপ' পতাকা দিয়ে চিহ্নিত করা হবে যাতে অন্য সমস্ত সার্ভার অফলাইনে থাকাকালীনই এটির চেষ্টা করা হয় ( এইচটিটিপি লোড ব্যালেন্সিং> সার্ভার ওজন )।

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