এনগিনেক্সে একাধিক ওয়েবসাইট, একটি আইপি


14

সুতরাং আমি ডিজিটাল সাগর এবং nginx ব্যবহার করছি। আমি একাধিক ওয়েবসাইট হোস্ট করতে চাই (আমার প্রকল্পগুলি) তবে প্রত্যেকটির জন্য একটি ডোমেন কিনতে চাই না।

সেই এক আইপি ব্যবহার করে এনজিনেক্স এবং ডিজিটাল সমুদ্রের একাধিক ওয়েবসাইট হোস্ট করার কোনও উপায় আছে কি?


তাদের বিভিন্ন ফোল্ডারে ( X.Y.Z.W/foo, X.Y.Z.W/bar) হোস্ট করবেন ? আপনি কেন তাদের জন্য ডোমেন পেতে পারেন না? (আপনি একই আইপিটিকে একাধিক ডোমেনে নির্ধারণ করতে পারবেন)?
মুড়ু

এটি করার জন্য আপনার একাধিক ডোমেন প্রয়োজন। একটি নিখরচায় ডোমেন পরিষেবা রয়েছে, যদিও: freenom.com আপনাকে বিনামূল্যে .tk, .ML, .ga, .cf এবং .gq ডোমেন দেয়।
দ্য ওয়ান্ডারার

@ মুরু আমার ধারণা তারা একাধিক ডোমেনে অর্থ ব্যয় করতে চায় না। তারা একটি ইউআরএল একাধিক ওয়েবসাইট আছে কিছু উপায় চান।
দ্য ওয়ান্ডারার

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

@ThomasW। আমি ভাবছিলাম সাব ডোমেনগুলি কোনও বিকল্প হবে না
দ্য ওয়ান্ডারার

উত্তর:


17

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

আইপি ঠিকানাগুলি মনে রাখা খুব খারাপ কারণেই আমি আইপি-ঠিকানা পদ্ধতির পরামর্শ দিচ্ছি না, এবং আপনি যদি অন্যের সাথে তথ্য ভাগ করে নেওয়ার চেষ্টা করেন তবে অন্যদেরও একই আইপি ঠিকানাটি মনে রাখার সমস্যা রয়েছে।


এক-আইপি, অনেকগুলি সাব-ফোল্ডার ডোমেন নাম ছাড়াই চলে

বিজ্ঞপ্তি! আপনি যে প্রকল্পগুলিতে কাজ করছেন সে সম্পর্কে আমাদের কাছে কোনও তথ্য নেই। আপনি এই পদ্ধতিটি করতে পারেন কিনা তা নির্ধারণ করার জন্য আমাদের আরও জানতে হবে, কারণ অনেকগুলি ওয়েব ফ্রেমওয়ার্ক এর সাথে আবদ্ধ সত্য ডোমেন নাম ছাড়া কাজ করবে না।


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

উপর nginxএক IP ঠিকানা, অনেক docroots এবং subfolder অবস্থানে - পার্শ্ব, আমরা এই একটি 'মন্দ' পদ্ধতির করতে হবে। এটি একটি খুব খারাপ দৃষ্টিভঙ্গি এবং কিছু ওয়েব ফ্রেমওয়ার্ক নিয়ে প্রচুর সমস্যা সৃষ্টি করতে পারে।

nginxসংগ্রহস্থলগুলি থেকে বেস হিসাবে একটি ডিফল্ট ইনস্টলকে ধরে নিই, তারপরে প্রতিটি প্রকল্পের উপ-ডিরেক্টরি অনুরোধ পরিচালনা করতে আমাদের একটি সাইট কনফিগারেশন তৈরি করতে হবে। তারপরে আমাদের এটিকে সঠিক স্থানে সিএমিলিং করতে হবে।

/etc/nginx/sites-available/my-projectsনিম্নলিখিতটি দিয়ে তৈরি করুন (এটি টেমপ্লেট / গাইড হিসাবে ব্যবহার করুন - এটি স্ট্যাটিক এইচটিএমএল সহ তিনটি প্রকল্প এবং পিএইচপি বা পাইথন বা অনুরূপ কোনও ডায়নামিক ওয়েব অ্যাপ্লিকেশন গ্রহণ করে না, এবং আপনি পৃথক অবস্থানের ব্লকগুলি অনুলিপি করতে পারেন এবং সেই অনুযায়ী নতুন অবস্থান তৈরি করতে পারেন; এটি আপনারও ধরে নেয় সার্ভার আইপি হয় 1.2.3.4)।

server {
    listen 80 default_server;

    server_name 1.2.3.4;

    location / {
        return 410;  # Default root of site won't exist.
    }

    location /proj1/ {
        alias /var/www/proj1;
        try_files $uri $uri/ =404;

        # any additional configuration for non-static content
    }

    location /proj2/ {
        alias /var/www/proj2;
        try_files $uri $uri/ =404;

        # any additional configuration for non-static content
    }

    location /proj3/ {
        alias /var/www/proj3;
        try_files $uri $uri/ =404;

        # any additional configuration for non-static content
    }
}

এখন আমরা ডিফল্ট কনফিগার প্রতিস্থাপন (এটি অপসারণ) এবং আমাদের যোগ করুন:

sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/my-projects /etc/nginx/sites-enabled

এবং তারপরে nginxপরিষেবাটি পুনরায় চালু করুন :

# If on 14.04, use this:
sudo service nginx restart

# If on 15.10 or newer, use this:
sudo systemctl restart nginx

এক-ডোমেন, একাধিক সাবডোমেনস পদ্ধতির।

এই উত্তর বিভাগটি ধরে নিয়েছে যে আপনার একটি ডোমেন এবং এতে একাধিক সাব-ডোমেন রয়েছে। আপনার যদি এটি না থাকে তবে দয়া করে আপনার প্রশ্নে এটি পরিষ্কার করুন

nginx server {}কনফিগারেশনের প্রতিটি ব্লকের সাথে আপনাকে সার্ভারের নামটি সংজ্ঞায়িত করতে হবে এবং অন্যান্য অনুরোধগুলির জন্য একটি চতুর্থ সার্ভার ব্লককে 'সমস্ত ক্যাচ' হিসাবে সেট করতে হবে।

উদাহরণ: আমি তিনটি প্রকল্প আছে, proj1, proj2, proj3। আমার কাছে একটি ডোমেন রয়েছে evil-projects.net(দ্রষ্টব্য: আসলেই নেই)। আমি তিনটি পৃথক সাবডোমেন চাই, প্রতিটি nginxকনফিগারেশনের জন্য একটি যা প্রতিটি প্রকল্পের দিকে নির্দেশ করবে। আমার সার্ভারটি 1.2.3.4 এ থাকে এবং এটি সমস্ত সাইট পরিবেশন করবে।

উপরের দৃশ্যের সাথে আমাদের দুটি অংশ রয়েছে: ডোমেন এবং সাবডোমেনস এবং সার্ভার কনফিগারেশন।

(1): ডিএনএস কনফিগারেশন

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

evil-projects.net  IN A  1.2.3.4
proj1.evil-projects.net  IN A  1.2.3.4
proj2.evil-projects.net  IN A  1.2.3.4
proj3.evil-projects.net  IN A  1.2.3.4

(২): সার্ভারে এনজিআইএনএক্স কনফিগারেশন (1.2.3.4)

এখন আপনার nginxকনফিগারেশন জন্য। আমি ধরে নিচ্ছি যে আপনি ডিপোজিটগুলি থেকে ডিফল্ট এনগিনেক্স সেটআপ এবং প্যাকেজগুলি পাবেন (আমি একটি বেস উদাহরণ হিসাবে 14.04 ব্যবহার করছি)। আমাদের /etc/nginx/sites-availableপ্রথমে চারটি কনফিগারেশন ফাইল রাখা হবে । এই ফাইলগুলি তৈরি করার sudoসময় আপনার প্রয়োজন হতে পারে , যেমন প্রশ্নে থাকা ফোল্ডারটি মালিকানাধীন root

/etc/nginx/sites-available/catch-all- এটি কোনও অবৈধ ডোমেনের জন্য 'ক্যাচ অল' হবে। আমি HTTP ত্রুটি কোড 410 (GONE) ফিরিয়ে দিতে চাই।

server {
    listen 80 default_server;

    server_name _;

    return 410;
}

এরপরে, আমরা আপনার সাইটগুলি / প্রকল্পগুলির জন্য কনফিগারেশন সেট আপ করেছি। আমি ধরে নিচ্ছি যে তারা সমস্ত স্থির ফাইল, যদিও। এর প্রতিটি দ্বারা বোঝা যায় যে সার্ভারে প্রতিটি প্রকল্পের জন্য আপনারও বিভিন্ন ওয়েব ডিরেক্টরি রয়েছে (বিভিন্ন 'নথি শিকড়')।

/etc/nginx/sites-available/proj1.evil-projects.net:

server {
    listen 80;

    server_name proj1.evil-projects.net;

    root /var/www/proj1;
    index index.htm index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

/etc/nginx/sites-available/proj2.evil-projects.net:

server {
    listen 80;

    server_name proj2.evil-projects.net;

    root /var/www/proj2;
    index index.htm index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

/etc/nginx/sites-available/proj3.evil-projects.net:

server {
    listen 80;

    server_name proj3.evil-projects.net;

    root /var/www/proj3;
    index index.htm index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

তারপরে আমাদের 'ডিফল্ট' কনফিগারেশনটি সরিয়ে ফেলতে হবে /etc/nginx/sites-enabledএবং আমাদের নিজস্ব যুক্ত করতে হবে। আবার, sudoএখানে প্রয়োজন।

sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/proj1.evil-projects.net /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/proj2.evil-projects.net /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/proj3.evil-projects.net /etc/nginx/sites-enabled/

এবং তারপরে আমরা nginxপ্রক্রিয়াটি পুনরায় চালু করব :

# If on 14.04, use this:
sudo service nginx restart

# If on 15.04 or newer, use this:
sudo systemctl restart nginx

একবার ডিএনএস প্রচার করলে সাইটগুলি তাদের কাজ মতো কাজ করবে।


এই কনফিগারেশনে আপনি কোথায় প্রক্সি_ক্যাচের জন্য ব্লক স্থাপন করবেন? ধরুন প্রোজ 1, প্রজ 2, প্রজ 3 এর একই রকমের সমস্ত পয়েন্ট রয়েছে যার বিভিন্ন শিকড় রয়েছে এবং পৃথক ফোল্ডারে প্রতিক্রিয়া ক্যাশে করতে চান।
ব্যবহারকারী 305883

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