এডাব্লুএস অ্যামাজন ইএলবি স্বাস্থ্য চেকগুলির জন্য এনগিনেক্স সলিউশন - আইএফ ছাড়াই 200 ফিরিয়ে দিন


22

আমার কাছে নিম্নলিখিত কোড রয়েছে যা এডাব্লুএস ইএলবি স্বাস্থ্য চেককে সুখী রাখতে Nginx এ কাজ করছে।

map $http_user_agent $ignore {
  default 0;
  "ELB-HealthChecker/1.0" 1;
}

server {
  location / {
    if ($ignore) {
      access_log off;
      return 200;
    }
  }
}

আমি জানি যে 'আইএফ' Nginx এর সাথে সবচেয়ে ভাল এড়ানো হয়েছে এবং আমি জিজ্ঞাসা করতে চেয়েছিলাম যে কেউ যদি 'যদি' না করে এটি পুনরুদ্ধার করতে জানেন তবে?

ধন্যবাদ

উত্তর:


62

জিনিসগুলিকে অত্যধিক জটিল করবেন না। আপনার ELB স্বাস্থ্য চেকগুলি কেবল তাদের জন্য একটি বিশেষ URL এ দেখান।

server {
  location /elb-status {
    access_log off;
    return 200;
  }
}

আপনার জবাব দেওয়ার জন্য থ্যাঙ্কু ... আপনি কি আরও স্পর্শ করতে পারবেন ... বর্তমানে ELB স্বাস্থ্য পরীক্ষায় আমি /index.html এ ইঙ্গিত করছি। আপনি কি '/ এল্ব-স্ট্যাটাস' বলে স্বাস্থ্য পরীক্ষা করে বোঝাচ্ছেন এবং উপরের সার্ভার ব্লকটি যুক্ত করেছেন? এইটাই কি সেইটা? / এলব-স্ট্যাটাস ইউআরএল থাকা দরকার? THX আবার
অ্যাডাম

আমি ইএলবিতে / এলব-স্ট্যাটাস রাখার সময় এবং উপরের সার্ভার ব্লকটি যুক্ত করে নিখুঁতভাবে কাজ করেছি - থ্যাঙ্কয়ুই এত !!! খুব প্রশংসা
আদম

আমি সাহায্য করতে পেরে আনন্দিত!
সিজেজোজ

1
হুম, আমি পেয়ে যাচ্ছি "/usr/share/nginx/html/elb-status" failed (2: No such file or directory)... কেন এমন হতে পারে এমন কোন ধারণা?
মাইকেল জলপ্রপাত

1
ঝরঝরে সমাধান। 😙
ফেগডে

27

কেবল উপরের উত্তরের উন্নতি করতে, যা সঠিক। নিম্নলিখিতটি দুর্দান্ত কাজ করে:

location /elb-status {
    access_log off;
    return 200 'A-OK!';
    # because default content-type is application/octet-stream,
    # browser will offer to "save the file"...
    # the next line allows you to see it in the browser so you can test 
    add_header Content-Type text/plain;
}

5

আপডেট: যদি ব্যবহারকারী এজেন্টের বৈধতা প্রয়োজনীয় হয়,

set $block 1;

# Allow only the *.example.com hosts. 
if ($host ~* '^[a-z0-9]*\.example\.com$') {
   set $block 0;
}

# Allow all the ELB health check agents.
if ($http_user_agent ~* '^ELB-HealthChecker\/.*$') { 
  set $block 0;
}

if ($block = 1) { # block invalid requests
  return 444;
}

# Health check url
location /health {
  return 200 'OK';
  add_header Content-Type text/plain;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.