এটি অর্জনের দুটি উপায় আছে। হয় আপনি আইপি ঠিকানায় সাবফোল্ডার লোকেশন সহ সমস্ত কিছু করেন বা আপনার একটি ডোমেন কিনতে হবে এবং তারপরে সেই ডোমেনে একাধিক সাবডোমেন থাকতে হবে (আপনি ডোমেনটি কিনে সাবডোমেনগুলির কোনও কিছুর জন্য কোনও মূল্য দিতে হবে না, তবে আপনার নিবন্ধকের সাথে চেক করুন)।
আইপি ঠিকানাগুলি মনে রাখা খুব খারাপ কারণেই আমি আইপি-ঠিকানা পদ্ধতির পরামর্শ দিচ্ছি না, এবং আপনি যদি অন্যের সাথে তথ্য ভাগ করে নেওয়ার চেষ্টা করেন তবে অন্যদেরও একই আইপি ঠিকানাটি মনে রাখার সমস্যা রয়েছে।
এক-আইপি, অনেকগুলি সাব-ফোল্ডার ডোমেন নাম ছাড়াই চলে
বিজ্ঞপ্তি! আপনি যে প্রকল্পগুলিতে কাজ করছেন সে সম্পর্কে আমাদের কাছে কোনও তথ্য নেই। আপনি এই পদ্ধতিটি করতে পারেন কিনা তা নির্ধারণ করার জন্য আমাদের আরও জানতে হবে, কারণ অনেকগুলি ওয়েব ফ্রেমওয়ার্ক এর সাথে আবদ্ধ সত্য ডোমেন নাম ছাড়া কাজ করবে না।
সতর্কতা : এই উদাহরণগুলির চলমান পরীক্ষায়, এটি আবিষ্কার করা হয়েছিল যে "একটি ডোমেন, অনেক উপ-ডিরেক্টরি" পদ্ধতির ব্যাকএন্ডে রিভার্স-প্রক্সিং ডেটা যথাযথভাবে গ্রহণ করা হয় না, কারণ অনুরোধ করা ইউআরআই ইউআরআইয়ের মধ্যে সাব-ডিরেক্টরিকে অন্তর্ভুক্ত করবে; এটি ব্যাকএন্ড সার্ভারগুলিকে সঠিকভাবে আচরণ করতে সমস্যা করতে পারে।
উপর 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
একবার ডিএনএস প্রচার করলে সাইটগুলি তাদের কাজ মতো কাজ করবে।
X.Y.Z.W/foo
,X.Y.Z.W/bar
) হোস্ট করবেন ? আপনি কেন তাদের জন্য ডোমেন পেতে পারেন না? (আপনি একই আইপিটিকে একাধিক ডোমেনে নির্ধারণ করতে পারবেন)?