404 ত্রুটিতে HAProxy URL পুনর্লিখন re


9

যখন প্রথমটি ফাইলটি অনুপস্থিত তখন কীভাবে HAProxy একটি আলাদা ব্যাক-এন্ডে পুনর্লিখন করবেন? আমার যা প্রয়োজন তা errorlocকেবল পুনর্নির্দেশের পরিবর্তে পুনর্লিখন করা, যাতে ক্লায়েন্ট পুনঃনির্দেশ সম্পর্কে সচেতন নয়।

আমরা এনগিনএক্সকে মাথায় রেখে একটি অ্যাপ্লিকেশন তৈরি করেছি, যা স্থির ফাইলগুলির জন্য ভারসাম্য বিপরীত প্রক্সি এবং ওয়েব সার্ভার উভয়ই ছিল। আবেদন উপর ভিত্তি করে তৈরি Opa- উভয় nginx এবং HAProxy দ্বারা সমর্থিত - ফ্রেমওয়ার্ক যা কুকিজ উপর ভিত্তি করে চটচটে সেশন প্রয়োজন। আমাদের যে অ্যাপ্লিকেশন বৈশিষ্ট্যটির সাথে সমস্যা রয়েছে তা হ'ল ডায়নামিক সামগ্রী তৈরি generation এটি চাহিদার ভিত্তিতে চিত্রগুলি উত্পন্ন করে তবে প্রজন্মের পরে এটি ডিস্কে সংরক্ষণ করা হয় এবং নির্ধারক পথে স্ট্যাটিকভাবে অ্যাক্সেস করা যায়।

সমস্যাটি সহজেই এনজিএনএক্স-এর সাথে সমাধান করা হয়েছিল - এটি স্থানীয় ফাইলটি পড়ার চেষ্টা করে এবং লোড সুষম ব্যাক-এন্ড কেবলমাত্র ফাইলটি অনুপস্থিত থাকলে (এখনও উত্পন্ন হয়নি) ব্যবহার করার চেষ্টা করে:

server {
  server_name wkaliszu.pl;
  location /thumb {
    root /path_on_disk/to_cached_content;
    expires 7d;
    # try to access already generated content
    try_files $uri @wkaliszu;
  }
  location / {
    # reverse proxy to the application
    [...]
  }
  location @wkaliszu {
    # reverse proxy to the application
    [...]
  }
}

সার্ভারটি স্থানান্তরিত হয়েছিল এবং এখন লোড ব্যালেন্সিংয়ের জন্য এইচএপিপ্রক্সি ব্যবহার করে, যা ওয়েব সার্ভার নয় এবং এই বৈশিষ্ট্যটিকে সমর্থন করে না। এখন গতিশীল সফ্টওয়্যার জেনারেশন প্রতিবার ক্লায়েন্ট রিসোর্স অ্যাক্সেস করার চেষ্টা করে, যা অনেক ধীর এবং সংস্থানগুলি অপচয় করে। এটি ঠিক আছে যদি এটি পরবর্তী ব্যাক-এন্ড ব্যবহার করতে পারে যদি প্রথম (স্ট্যাটিক ফাইলগুলির জন্য সাধারণ ক্যাশে ওয়েব সার্ভার) ত্রুটি 404 এ ব্যর্থ হয় তবে আমি এটিকে সহজ উপায়ে করার উপায় খুঁজে পাচ্ছি না। /thumbNginX- এ পুনর্নির্দেশ , যা স্থির ফাইলটি পড়ার চেষ্টা করে এবং আবার নতুন এইচটিটিপি শিরোনাম দিয়ে এইচআরপক্সিতে পুনরায় লেখায় কেবল আমার মনে আসে তবে আমি আরও ভাল কিছু খুঁজে পেতে চাই।


আপনি অ্যাপ্লিকেশন সার্ভারগুলির ব্যাকএন্ডটি কী অ্যাপ স্ট্যাক ব্যবহার করেন?
জেফত্রকাইদ

উত্তর:


1

এইপপ্রক্সির ব্যাকেন্ডগুলি হয় উপরে বা নীচে (বা তাদের উপরে / নিচে যাওয়ার পথে)।

ব্যাকএন্ডের স্বাস্থ্য পরীক্ষা করার বিভিন্ন উপায় রয়েছে তবে প্রতি অনুরোধ ভিত্তিক ট্র্যাকিং সরবরাহকারী কোনও বিষয়ে আমি অবগত নই। একবার কোনও অনুরোধ ব্যর্থ হয়ে গেলে, ব্যাকএন্ডটি নীচে হিসাবে চিহ্নিত হবে বা ব্যর্থ হবে (নিচে বিবেচনা করার পথে)।

এটি আপনার এনগিনেক্স সেটআপের তুলনায় একেবারেই আলাদা যুক্তি যা প্রতি অনুরোধের ভিত্তিতে অনুরোধগুলি রুট করছে।

আমি এখানে বেশ কয়েকটি বিকল্প দেখতে পেয়েছি:

  • ক্যাগিং প্রক্সি হিসাবে এনগিনেক্স
  • স্ট্যাটিক সামগ্রীর জন্য অ্যাপ্লিকেশন সার্ভারগুলি ব্যবহার করুন
  • সিডিএন ব্যবহার করুন

প্রক্সি ক্যাচিং

HAProxy এ, আপনি স্থির সামগ্রীর অনুরোধগুলিকে একটি নির্দিষ্ট ব্যাকএন্ডে রুট করতে ACL ব্যবহার করবেন। এই ব্যাকএন্ড নোডগুলি ক্যাচিং প্রক্সি সহ এনগিনেক্স চালাবে। Nginx ফাইলটি ক্যাশে করা থাকলে, এটি কেবল এটি পরিবেশন করবে। যদি তা না হয় তবে এটি আপনার ব্যাকএন্ডে কল করবে।

স্ট্যাটিক সামগ্রীর জন্য অ্যাপ সার্ভারগুলি ব্যবহার করুন

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

সিডিএন অপশন

আপনি যদি স্থির সামগ্রীর জন্য ডেডিকেটেড ডোমেন ব্যবহার করতে পারেন তবে আপনি সিডিএন ব্যবহার করতে সক্ষম হতে পারেন। সিডিএন-এ, আপনি কেবল আপনার অ্যাপ্লিকেশন নোডগুলিতে উত্স URL টি নির্দেশ করুন। তারপরে আপনি সিডিএন স্তরে ক্যাচিং নিয়ন্ত্রণ করতে পারবেন। এটি সিডিএন সরবরাহকারী আপনার জন্য পরিচালনা করছে তা বাদ দিয়ে উপরের এনগিনেক্স ক্যাশেটির অনুরূপ।

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