এনগিনেক্স: সার্ভারে কীভাবে হোস্ট শিরোলেখ সেট করা যায় (লোড ব্যালেন্সিং)


10

আমার একটি সাইট লোড ব্যালেন্সার হিসাবে কাজ করে। সাইট এ।

আমার কাছে অন্যান্য সাইট রয়েছে যেগুলিতে কেবল একটি ডোমেন থাকতে পারে। সুতরাং আমি যদি তাদের কাছে কেবল পুনঃনির্দেশ করি তবে এটি বলছে হোস্টের নাম পাওয়া যায় নি।

সুতরাং আমি যদি ম্যানুয়ালি কোনও কিছুতে শিরোনাম সেট করি তবে কেবল সেই সাইটটি প্রদর্শিত হবে।

আমি কীভাবে proxy_set_header Host xxxxনির্বাচিত সার্ভারের ঠিকানায় সেট করতে পারি । এইভাবে প্রতিটি পুনর্নির্মাণের অনুরোধটির আলাদা এবং উপযুক্ত হোস্ট শিরোনাম থাকবে।

আমার অন্য 2 টি সাইট url এর ভিত্তিতে কাজ করতে পারে এবং হোস্ট শিরোনাম না করে সমস্যা হবে না।

worker_processes  1;

error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;
error_log  logs/error.log  debug;

pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    upstream myapp1 {
        #server localhost:3333;
        server www.asd.com:80;
    }

    server {
        listen 80;

        location / {
            proxy_set_header Host            $upstream_addr;  // should become somehow www.asd.com right now this code doesn't work
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_pass http://myapp1;
        }
    }
}

$server_addrকোনওরকমে 127.0.0.1 কেন ??
মুহাম্মদ উমার

আমি চাই সার্ভারটি www.asd.com:80বেছে নেওয়ার সময় হোস্ট শিরোনামটি www.asd.com হোক
মুহাম্মদ উমার

বা যদি লেখার কোনও উপায় থাকে if(server1) than host = a; ,if(server2) than host = b;
মুহাম্মদ উমার

1
জিনিসটি হ'ল উপযুক্ত হোস্ট শিরোনামটি আমার মতে, আপনি ক্লায়েন্টের কাছ থেকে যা পান তা হওয়া উচিত। যদি ক্লায়েন্টটি www.asd.com কে অনুরোধ করে তবে হোস্ট শিরোনামটি সেটাই হওয়া উচিত। এটি প্রয়োজন অনুসারে ব্যাকএন্ডে সঠিকভাবে নিখুঁত url উত্পন্ন করতে সহায়তা করবে, কুকিজ ইত্যাদির জন্য সঠিক ডোমেনগুলি সেট করবে আপনি যা যা করার চেষ্টা করছেন আপনি সম্ভবত এটি ভুল উপায়ে দেখছেন।
ফ্লোরিন Asăvoaie

ক্লায়েন্ট এবং মিডল সার্ভার উভয়ই আমি।
মুহাম্মদ উমার

উত্তর:


6

এখানে ডকুমেন্টেড হিসাবে আপনাকে আসন্ন হোস্ট ভেরিয়েবলের শিরোনামটি সেট করতে হবে :

proxy_set_header Host $host;

This variable is equal to line Host in *the header of request* or nameযার অর্থ ক্লায়েন্ট / ব্রাউজার যা বলুক না কেন, এটিই বেছে নেওয়া হয়।
মুহাম্মাদ উমর :18

এই আপনি কি করতে চান, সঠিক? ক্লায়েন্টটি আপনার প্রক্সি থেকে কোনও সংস্থান / ভার্চুয়াল হোস্টের জন্য অনুরোধ করে এবং আপনাকে ভার্চুয়াল হোস্টটি সরবরাহ করতে হবে। পরিবেশন করা ভার্চুয়াল হোস্ট ক্লায়েন্ট / orণগ্রহীতা দ্বারা চয়ন করা হয়।
জেফ ওং

কোনও ভার্চুয়াল হোস্ট এলোমেলোভাবে সার্ভার দ্বারা নির্বাচিত নয়
মুহাম্মদ উমর

1
এটার মতো কিছু? দুই স্তরের প্রক্সি তৈরি করুন এবং হোস্টটিকে
জেফ ওয়াং

অসুস্থরা একবার দেখুন, কিন্তু আমি মনে করি ive ইতিমধ্যে দেখা গেছে যেহেতু আমি সেখানে কিছু জিনিস উপার্জন করেছি
মুহাম্মদ উমর

0

এই প্রশ্নের উত্তরগুলি এই আচরণটি ব্যাখ্যা করে এবং কার্যধারার প্রস্তাব দেয়

মূলত, উপরের অংশটি নির্বাচিত হওয়ার আগে শিরোনামটি ঠিক করা হয়। আপনি যদি সমস্ত প্রবাহকে একক হোস্ট: শিরোনামকে প্রতিক্রিয়া জানাতে না পারেন তবে আপনাকে শিরোনাম সেট করার সাথে সাথে একই সময়ে প্রবাহকে ঠিক করতে হবে।

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