नग्नेक्स पर वाइल्डकार्ड vhosts


25

मैंने अभी अपने सर्वर पर Nginx स्थापित किया है और परिणामों से बेहद खुश हूं, हालांकि मैं अभी भी यह पता नहीं लगा सकता कि वाइल्डकार्ड वर्चुअल होस्ट कैसे सम्मिलित करें।

यह है [निर्देशिका] संरचना मैं चाहूंगा:

-- public_html (example.com)
---subdoamin 1 (x.example.com)
---subdomain 2 (y.example.com)

जैसा कि आप देख सकते हैं कि यह बहुत ही मूल है, हालाँकि, मैं एक नए उपडोमेन के लिए केवल A रिकॉर्ड जोड़कर डोमेन जोड़ने की क्षमता चाहूँगा, जो public_html के तहत तुरंत उसी नाम के उपनिर्देशिका को इंगित करेगा।

वेब पर सामान है, हालांकि मैं इस तरह से कुछ नहीं आया हूं।

किसी भी तरह की सहायता का स्वागत किया जाएगा।


जब आपके उदाहरण के दो अलग-अलग नाम हैं, तो मुझे यकीन नहीं है कि आप "एक ही नाम के उपनिर्देशिका" से क्या मतलब है: subdomain 1/ x.example.com- क्या आप स्पष्ट कर सकते हैं?
निकरिम

सच है, बहुत स्पष्ट खेद नहीं है। कहने दें कि मेरे पास उपडोमेन x.example.com है, यह निर्देशिका / public_html / x होगी, हालाँकि मुझे example.com और www.example.com दोनों की ज़रूरत है / public_html /
rorygilchrist

जवाबों:


39

मैं तुम्हें दिखाता हूँ।

कॉन्फ़िगरेशन फ़ाइल

server {
  server_name example.com www.example.com;
  root www/pub;
}

server {
  server_name ~^(.*)\.example\.com$ ;
  root www/pub/$1;
}

फ़ाइलों का परीक्षण करें

हमारे पास दो परीक्षण फाइलें हैं:

$ cat www/pub/index.html 
COMMON

$ cat www/pub/t/index.html 
T

परिक्षण

स्थैतिक सर्वर नाम:

$ curl -i -H 'Host: example.com' http://localhost/
HTTP/1.1 200 OK
Server: nginx/0.8.54
Date: Wed, 23 Mar 2011 08:00:42 GMT
Content-Type: text/html
Content-Length: 7
Last-Modified: Wed, 23 Mar 2011 07:56:24 GMT
Connection: keep-alive
Accept-Ranges: bytes

COMMON

$ curl -i -H 'Host: www.example.com' http://localhost/
HTTP/1.1 200 OK
Server: nginx/0.8.54
Date: Wed, 23 Mar 2011 08:00:48 GMT
Content-Type: text/html
Content-Length: 7
Last-Modified: Wed, 23 Mar 2011 07:56:24 GMT
Connection: keep-alive
Accept-Ranges: bytes

COMMON

और regexp सर्वर नाम:

$ curl -i -H 'Host: t.example.com' http://localhost/
HTTP/1.1 200 OK
Server: nginx/0.8.54
Date: Wed, 23 Mar 2011 08:00:54 GMT
Content-Type: text/html
Content-Length: 2
Last-Modified: Wed, 23 Mar 2011 07:56:40 GMT
Connection: keep-alive
Accept-Ranges: bytes

T

दुर्भाग्य से काम नहीं करता है। सभी उप डोमेन केवल public_html को इंगित करते हैं। यहाँ दूसरा सर्वर विन्यास है:server{ listen 80; server_name ~^(.*)\.example\.com$ ; location / { root /var/www/public_html/$1; index index.html index.htm index.php; } location ~ \.php$ { root $1; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/public_html/$1$fastcgi_script_name; include fastcgi_params; } }
rorygilchrist

4
"दुर्भाग्य से काम नहीं करता है" दुर्भाग्य से कोई विवरण नहीं देता है। विवरण के लिए हमेशा nginx error.log में देखें। मैंने आपको यह दिखाने के लिए अपना उत्तर अपडेट कर दिया है कि यह कॉन्फ़िगरेशन कैसे काम करता है। आप देख सकते हैं मेरी Nginx संस्करण 0.8.54 है
अलेक्जेंडर Azarov

अभी मेरे लिए पूरी तरह से काम किया।
क्लेयर फर्नी

5

नीचे दी गई यह Nginx कॉन्फ़िगरेशन फ़ाइल वाइल्डकार्ड होस्टनाम के लिए अनुमति देती है जो गतिशील रूप से संबंधित फ़ोल्डर में रूट करता है /var/www/vhost/जबकि गतिशील रूप से संबंधित लॉग फ़ाइलों को भी उत्पन्न करता है।

http://test1.wildcard.com/var/www/vhost/test1
                                                   /var/log/nginx/test1.wildcard.com-access.log                                                    /var/log/nginx/test1.wildcard.com-error.log

http://test2.wildcard.com/var/www/vhost/test2
                                                   /var/log/nginx/test2.wildcard.com-access.log                                                    /var/log/nginx/test2.wildcard.com-error.log

wildcard.conf

server {
  listen 80;
  listen [::]:80;

  #  Match everything except dot and store in $subdomain variable
  #  Matches test1.wildcard.com, test1-demo.wildcard.com
  #  Ignores sub2.test1.wildcard.com
  server_name ~^(?<subdomain>[^.]+).wildcard.com;

  root /var/www/vhost/$subdomain;

  access_log /var/log/nginx/$host-access.log;
  error_log  /var/log/nginx/$host-error.log;
}

कृपया अपना समाधान बताएं।
एंड्रयू शुलमैन

यह एक मौजूदा उत्तर के समान प्रतीत होता है। इससे क्या जुड़ता है?
माइकल हैम्पटन

1
थोड़ी और विशिष्टता प्रदान करता है। आशा है कि यह सभी की मदद करे।
एंथुमक्रिस

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.