इसे प्राप्त करने के दो तरीके हैं। या तो आप सब कुछ आईपी पते से करते हैं, सबफ़ोल्डर स्थानों के साथ, या आपको एक डोमेन खरीदने की आवश्यकता होगी और फिर उस डोमेन पर कई उप-डोमेन होंगे (यदि डोमेन खरीदते हैं तो उप डोमेन में कुछ भी खर्च नहीं होना चाहिए, लेकिन अपने रजिस्ट्रार से जांच लें)।
मैं आईपी-एड्रेस पद्धति की सलाह नहीं देता, यदि केवल इसलिए कि आईपी पते को याद रखना बहुत बुरा है, और यदि आप दूसरों को जानकारी साझा करने का प्रयास करते हैं, तो आपको दूसरों की भी यही समस्या है कि आईपी पते को याद रखें।
एक डोमेन नाम के बिना एक-आईपी, कई सबफ़ोल्डर्स दृष्टिकोण
नोटिस! आपके पास अपनी परियोजनाओं के बारे में कोई जानकारी नहीं है। हमें यह निर्धारित करने के लिए और अधिक जानने की आवश्यकता है कि क्या आप इस दृष्टिकोण को कर सकते हैं, क्योंकि कई वेब फ्रेमवर्क एक सच्चे डोमेन नाम के बिना काम नहीं करेंगे।
चेतावनी : इन उदाहरणों के चल रहे परीक्षण में, यह पता चला कि "एक डोमेन, कई उपनिर्देशिकाएं" दृष्टिकोण कृपया बैकएंड पर डेटा को रिवर्स-प्रॉक्सिंग करने के लिए नहीं लेते हैं, क्योंकि अनुरोध किए गए यूआरआई में उपनिर्देशिका शामिल होंगे; इससे बैकएंड सर्वर को ठीक से व्यवहार करने में समस्या हो सकती है।
पर nginx
एक IP पता, कई docroots और सबफ़ोल्डर स्थानों - पक्ष, हम इस के लिए एक 'बुराई' दृष्टिकोण की ज़रूरत है। यह एक बहुत ही दुष्ट दृष्टिकोण है और कुछ वेब फ्रेमवर्क के साथ बहुत सारी समस्याएं पैदा कर सकता है।
एक डिफ़ॉल्ट nginx
इंस्टॉल को रिपॉजिटरी से आधार के रूप में मानते हुए , फिर हमें प्रत्येक प्रोजेक्ट उपनिर्देशिका अनुरोध को संभालने के लिए साइट कॉन्फ़िगरेशन बनाना होगा। फिर हमें इसे सही स्थान पर सिमिल करना होगा।
/etc/nginx/sites-available/my-projects
निम्नलिखित के साथ बनाएं (इसे टेम्पलेट / मार्गदर्शिका के रूप में उपयोग करें - यह स्थैतिक HTML के साथ तीन परियोजनाओं को मानता है और पीएचपी या अजगर या समान में कोई गतिशील वेब अनुप्रयोग नहीं है, और आप अलग-अलग स्थान ब्लॉक की प्रतिलिपि बना सकते हैं और तदनुसार नए स्थान बना सकते हैं; यह आपके भी मानता है सर्वर आईपी 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): DNS कॉन्फ़िगरेशन
अपने DNS को अपने होस्ट पर सेट करें जैसे कि DNS रिकॉर्ड्स के साथ निम्नलिखित सही है:
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
(2): सर्वर पर NGINX कॉन्फ़िगरेशन (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
एक बार DNS के प्रचार के बाद, साइटें वैसी ही काम करेंगी, जैसी उन्हें करनी चाहिए।
X.Y.Z.W/foo
,X.Y.Z.W/bar
) पर होस्ट करें ? आप उनके लिए डोमेन क्यों नहीं प्राप्त कर सकते हैं? (आप एक ही आईपी को कई डोमेन पर असाइन कर सकते हैं)?