নেম ভার্চুয়ালহোস্টগুলি ব্যবহার করার সময় এবং www এ পুনঃনির্দেশ করার সময় আমার ELB স্বাস্থ্য পরীক্ষা কীভাবে কনফিগার করা উচিত?


8

আমার ELB আমার দৃষ্টান্তগুলি পরিষেবা থেকে দূরে রাখে, কারণ এইচটিটিপি স্বাস্থ্য পরীক্ষা ব্যর্থ হচ্ছে।

আমাদের একটি ডিএনএস ওয়াইল্ডকার্ড রয়েছে এবং সমস্ত কিছু www- এ পুনঃনির্দেশ করুন:

vhost.conf:

ServerName www.example.com
ServerAlias *.example.com
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^ http://www.example.com/$1 [R=301,L]

এটি প্রকৃত ব্রাউজারগুলির জন্য দুর্দান্ত কাজ করে তবে HTTP স্বাস্থ্য পরীক্ষা / ব্যর্থ হয়, সম্ভবত এটি 302 পেয়ে যাওয়ায় because

টিসিপি স্বাস্থ্য পরীক্ষা করার জন্য সর্বোত্তম বিকল্পটি, বা এইচটিটিপিকে কাজ করার কোনও উপায় আছে?


AWS স্বাস্থ্য পরীক্ষার জন্য প্রেরিত হোস্ট শিরোনামকে কাস্টমাইজ করার অনুমতি না দেওয়া পর্যন্ত কেবল একটি টিসিপি স্বাস্থ্য পরীক্ষা ব্যবহার করুন। এমনকি আপনার ওয়েবসারভারে একটি ডিফল্ট এন্ট্রি থাকা সত্ত্বেও আপনি আসলে আপনার অ্যাপ্লিকেশনটির স্বাস্থ্য পরীক্ষা করছেন না, কেবলমাত্র আপনার ওয়েবসারভার যা টিসিপি পোর্টটি খোলা আছে কিনা তা যাচাই করার মতোই একই is
পাইকলার

উত্তর:


11

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

আপনি বিকল্পভাবে ইউআরএলটির সেই অংশের অংশটি নির্দিষ্ট করতে পারেন যা আপনি ELB কে অনুরোধ করতে চান এবং অন্য রাইরাইটকন্ড যুক্ত করে সেই পথটিকে উপেক্ষা করতে চান:

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/health-check$
RewriteRule ^ http://www.example.com/$1 [R=301,L]

যে ব্যবহারকারীরা সেই ইউআরএল হিট করেন তাদের পুনঃনির্দেশ দেওয়া হবে না।

আপনি ELB- এর ব্যবহারকারী-এজেন্ট সনাক্ত করতে একই কৌশলটি ব্যবহার করতে পারেন।

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker
RewriteRule ^ http://www.example.com/$1 [R=301,L]

সাধারণ ব্যবহারকারীরা যারা তাদের ব্যবহারকারী-এজেন্টকে ফাঁকি দিচ্ছেন তাদের পুনঃনির্দেশ দেওয়া হবে না।

অথবা ইএলবির অভ্যন্তরীণ আইপি ঠিকানা।

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{REMOTE_ADDR} !^10\.
RewriteRule ^ http://www.example.com/$1 [R=301,L]

এই বিকল্পটি কাজ করার জন্য, আপনাকে শিরোনামের সামগ্রীর সঠিক অংশটি রাখতে ভেরিয়েবলটি পরিবর্তন করতে ( mod_rpafঅ্যাপাচি ২.২ এর জন্য) বা mod_remoteip(অ্যাপাচি ২.৪ এর জন্য ) প্রয়োজন হবে । যতক্ষণ আপনি এটিকে সঠিকভাবে সেট আপ করেছেন, ততক্ষণ কোনও সাধারণ ব্যবহারকারীর পক্ষে পুনর্নির্দেশের প্রতিক্রিয়া এড়ানো সম্ভব হবে না।REMOTE_ADDRX-Forwarded-For


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

আইপি ঠিকানা চেক আমি অন্তর্ভুক্ত কেবলমাত্র চেক যে আইপি ঠিকানা দিয়ে শুরু হয় 10.। আইপি অ্যাড্রেসের বাকি অংশগুলি যত খুশি পরিবর্তন করতে পারে এবং সেগুলি এখনও মিলবে। 10.*.*.*IP ঠিকানার (অথবা 10.0.0.0/8) পরিসীমা ইন্টারনেটের মাধ্যমে routable নয়।
লাদাদাদাদা

আমি ইতিমধ্যে অনুরোধকারীদের আইপি ঠিকানা লগ করতে দূরবর্তী আইপি ব্যবহার করছি (ইএলবি আইপির বিপরীতে) তাই তৃতীয় বিকল্পটি কাজ করেছে - ধন্যবাদ!
ক্রিস

0

ভার্চুয়াল হোস্টগুলি যুক্ত করা ভাল ধারণা নয়, যেহেতু ভার্চুয়াল হোস্টগুলির প্রতিফলিত হওয়ার জন্য একজনকে httpd পরিষেবা পুনরায় চালু করতে হবে। এটি করার একটি বিকল্প উপায় আছে

  1. ELB স্বাস্থ্য পরীক্ষার পথটিকে উপেক্ষা করুন। Htaccess ফাইলটি ডিএনএস
    নামের সমস্ত চারটি অংশ পৃথক পৃথকভাবে অনুসরণ
    করে: elb_dns_name: elb-name.subnet_zone.elb.amazonaws.com
  2. বাকি সমস্ত url গুলির জন্য অভ্যন্তরীণ পুনর্লিখনের নিয়ম
    ডিরেক্টরি_স্ক্রচার: কোড_ফোল্ডার / ওয়েবসাইট রয়েছে


    RewritEngine on RewritCond% {HTTP_HOST}! $ [NC] RewritCond
    % {REQUEST_URI}! ^ / Index.php $ RewritRule
    ^ (। *) $ / $ 1 [এল, কিউএসএ]

এটি আমার পক্ষে খুব ভাল কাজ করেছে। আরও ভাল পদ্ধতি চিয়ার আছে কিনা দয়া করে পরামর্শ!

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