লোড ব্যালেন্সারের পিছনে এনগনিক্স সহ https এ পুনরায় লিখুন


13

আমি একটি র্যাকস্পেস লোড ব্যালেন্সার ব্যবহার করছি যা আমাকে প্রশাসনিক প্যানেলের ভিতরে আমার এসএসএল কী / পিএম সেট আপ করতে সক্ষম করে। সবকিছু ঠিকঠাক কাজ করে, আমি উভয়ই http এবং https প্রোটোকল ব্যবহার করতে পারি। তবে আমি যদি এই ব্যবহার করে এইচটিপিটি https এ পুনর্নির্দেশের চেষ্টা করি:

server{
  listen *:80;
  server_name mydomain.com www.mydomain.com; 
  rewrite ^ https://mydomain.com$request_uri? permanent;

... আমি একটি পুনর্নির্দেশ লুপ পেয়েছি আমি বুঝতে পারি যে আমি 443 পোর্টটি শুনছি না তবে এটি কারণ ভার ভারসাম্যকারী আমার জন্য এটি পরিচালনা করেছিলেন। আমি আবারও লিখতে চেষ্টা করেছিif ($scheme ~* http){ কোনও লাভ হয়নি।

আমার প্রশ্নের অন্য অংশটি হ'ল আমি url থেকে www মুছে ফেলতে চাই, আমি কি একটি একক পুনর্লিখন দিয়ে এটি করতে পারি? উপরের পুনর্লিখনটিও কি এটির যত্ন নেওয়া উচিত নয়?

আপনার সাহায্যের জন্য ধন্যবাদ!


লোড ব্যালেন্সারটি আপনাকে সংযোগটি এইচটিটিপিএস ছিল কিনা সে সম্পর্কে কিছু সূচনা প্রেরণ করা উচিত। র্যাকস্পেস জিজ্ঞাসা করুন। (ওহ, এবং আপনি সম্ভবত www থেকে মুক্তি পেতে চান না ...)
মাইকেল হ্যাম্পটন

আকর্ষণীয়, আমি এটি খতিয়ে দেখব। আপনি কেন মনে করেন আমার www থেকে মুক্তি পাওয়া উচিত নয়?
jwerre

উত্তর:


14

সাইরাসটি সঠিক যে র‌্যাকস্পেসের ক্লাউড লোড ব্যালান্সাররা এসএসএল লোড ব্যালেন্সারে অফলোড হওয়ার পরে এক্স-ফরওয়ার্ডড-প্রোটোটি https এ সেট করে। এনগিনেক্সে পুনর্নির্দেশের লুপ এড়াতে locationআপনার vhost কনফিগারেশনের বিভাগটিতে নিম্নলিখিতটি যুক্ত করতে সক্ষম হওয়া উচিত :

if ($http_x_forwarded_proto = "http") {
            rewrite  ^/(.*)$  https://mydomain.com/$1 permanent;
}

Https এ নন-https অনুরোধগুলি পুনর্নির্দেশের সময় এটি অসীম পুনর্নির্দেশ লুপ এড়ানো উচিত।


18

এনগিনেক্সের অন্তর্নির্মিত সার্ভার ভেরিয়েবলগুলি ব্যবহার করে $request_uriএবং $server_nameআপনি কোনও নিয়মিত এক্সপ্রেশন ব্যবহার না করেই এটি করতে পারেন। আপনার সার্ভারের locationব্লকে নিম্নলিখিতটি যুক্ত করুন এবং আপনি শেষ করেছেন:

if ($http_x_forwarded_proto = "http") {
    return 301 https://$server_name$request_uri;
}

এটি ধরে নিয়েছে যে আপনার লোড ব্যালান্সার $http_x_forwarded_protoআপনার ব্যাকএন্ড উদাহরণগুলিতে অনুরোধের সাথে শিরোনাম প্রেরণ করছে । অন্যান্য সাধারণ শিরোলেখগুলি অন্তর্ভুক্ত $http_x_forwarded_schemeএবং মাত্র $scheme

আরও তথ্য এনজিন্স পিটফলস এবং সাধারণ ভুল দস্তাবেজগুলিতে পাওয়া যাবে: https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#taxing-rewrites


5
পুনরায় লেখার ওপরে রিটার্ন অবশ্যই ব্যবহার করা উচিত। সম্মত।
ডিজাইনারমনকি

1
আপনি এর $hostপরিবর্তে ব্যবহার করতে পারেন$server_name
ইয়োশি

সার্ভার_নাম _ এর সাথে কাজ করে না; সুতরাং একটিকে @ ইউসির পরামর্শ অনুসারে হোস্ট ভেরিয়েবল ব্যবহার করা উচিত।
রাজওয়ান গ্রিগোর

1

লোড ব্যালেন্সার সর্বদা আপনার সাথে http এর মাধ্যমে কথা বলে। যা হচ্ছে তা হচ্ছে

  1. ব্রাউজারটি লোড ব্যালেন্সারে 80 পোর্ট করার জন্য একটি অনুরোধ করে
  2. লোড ব্যালান্সার আপনার ওয়েব সার্ভারে 80 পোর্ট করার জন্য একটি অনুরোধ করে
  3. আপনার ওয়েব সার্ভারটি ব্যবহারকারীকে পুনর্নির্দেশ পাঠায়
  4. ব্যবহারকারী লোড ব্যালেন্সারে 443 পোর্ট করার জন্য একটি অনুরোধ করে

ব্রাউজার পুনর্নির্দেশ লুপ সনাক্ত না করে এবং হাল ছেড়ে না দেওয়া পর্যন্ত 2-4 টি ধাপ পুনরাবৃত্তি করে চলে।

সম্পাদনা: এটি সমাধানের জন্য, কেবলমাত্র এক্স-ফরওয়ার্ড-প্রোটো শিরোনামটি http এ সেট করা থাকলে পুনর্লিখনটি সম্পাদন করুন। সেই শিরোনামটি কীভাবে র্যাকস্পেসের লোড ব্যালেন্সার আপনার ওয়েব সার্ভারটিকে প্রোটোকলটি বলে যার মাধ্যমে এটি অনুরোধ পেয়েছিল tells


আমার অনুমান যে এটি ব্যাখ্যা করবে কেন $ সার্ভার_প্রোটোকল সর্বদা এইচটিটিপি
জুরিয়ার

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