गतिशील उप डोमेन के साथ अपाचे वर्चुअल होस्ट


2

मेरा उद्देश्य 2 आभासी मेजबान बनाने में सक्षम होना है जहां एक देव वातावरण से मेल खाता है और दूसरा मेरे स्थानीय ubuntu 16.04 मशीन में परीक्षण के माहौल के अनुरूप है। इस एप्लिकेशन के लिए विशेष रूप से एक बात यह है कि इसे गतिशील उप-डोमेन का समर्थन करना है। उनमें से कुछ लॉगिन और व्यवस्थापक उपडोमेन की तरह तय किए गए हैं, लेकिन प्रत्येक उपयोगकर्ता का अपना उपडोमेन भी होगा। देव वातावरण के लिए यह वर्चुअल होस्ट ठीक काम करता है:

<VirtualHost *:80>
        ServerName myapp.local
        ServerAlias *.myapp.local
        DocumentRoot /var/www/myapp/web
        <Directory /var/www/myapp/web/>
            AllowOverride All
            Require local
        </Directory>
        ErrorLog /var/www/myapp/logs/error.log
        CustomLog /var/www/myapp/logs/access.log combined
</VirtualHost>

अब मैं परीक्षण संस्करण के लिए एक आभासी होस्ट करने में सक्षम होना चाहता हूं और इसे इस url द्वारा एक्सेस करना चाहता हूं: login.test.myapp.local, admin.test.myapp.local, ... यहां वह वर्चुअल होस्ट है जो मेरे पास है अभी भी काम नहीं कर रहा है क्योंकि अनुरोध हमेशा इस समय पहले वर्चुअल होस्ट में आता है:

<VirtualHost *:80>
        ServerName test.myapp.local
        ServerAlias *.test.myapp.local
        DocumentRoot /var/www/test.myapp/web
        <Directory /var/www/test.myapp/web/>
            AllowOverride All
            Require local
        </Directory>
        ErrorLog /var/www/test.myapp/logs/error.log
        CustomLog /var/www/test.myapp/logs/access.log combined
</VirtualHost>

मुझे पता है कि मुझे "परीक्षण" से शुरू होने वाले यूआरएल को अनदेखा करने के लिए पहले वर्चुअल होस्ट को बताने की आवश्यकता है। और "* .test।" लेकिन मुझे नहीं पता कि यह कैसे करना है।

धन्यवाद

जवाबों:


2

अपाचे अपने विन्यास की व्याख्या उस क्रम में करता है जिसमें यह दर्ज किया गया है। उदाहरण के लिए हम पहले इनकार के निर्देशों को रखते हैं और दूसरे को अनुमति के निर्देशों पर।

आपको अपने वर्चुअल होस्ट कॉन्फ़िगरेशन को एक सही क्रम में रखना होगा। उदाहरण के लिए परीक्षण वर्चुअल होस्ट कॉन्फ़िगरेशन को नामित फ़ाइल में 001-test.myapp.local.confऔर नियमित वर्चुअल होस्ट नाम की फ़ाइल में रखें 002-myapp.local.conf। या यदि दोनों कॉन्फ़िगरेशन एक फ़ाइल में हैं तो परीक्षण को पहले एक जगह दें:

$ cat /etc/apache2/sites-available/myapp.local.conf 

<VirtualHost *:80>
        ServerName test.myapp.local
        ServerAlias *.test.myapp.local
        DocumentRoot /var/www/test.myapp/web
        <Directory /var/www/test.myapp/web/>
            AllowOverride All
            Require local
        </Directory>
</VirtualHost>

<VirtualHost *:80>
        ServerName myapp.local
        ServerAlias *.myapp.local
        DocumentRoot /var/www/myapp/web
        <Directory /var/www/myapp/web/>
            AllowOverride All
            Require local
        </Directory>
</VirtualHost>

इस प्रकार जो अनुरोध पहले वर्चुअल होस्ट से मेल नहीं खाते, वे दूसरे नंबर पर आ जाएंगे। यहाँ यह अपाचे / 2.4.29 के साथ उबंटू 18.04 पर काम कर रहा है:

यहाँ छवि विवरण दर्ज करें


मैं सिर्फ एक ही .conf फ़ाइल में दूसरे से पहले परीक्षण वर्चुअल होस्ट डालकर परीक्षण किया और अब यह काम करता है। धन्यवाद!
करीम माउंट

आपका स्वागत है, @KarimMtl
पा ०४० 12०

@ pa4080 कोई अन्य सेटिंग्स करने की आवश्यकता है? जैसे / etc / मेजबान या कोई अन्य। क्योंकि im को IP एड्रेस जैसी कोई त्रुटि प्राप्त नहीं हो सकी। मैंने अपनी DocumentRoot निर्देशिका को / var / www / html / my-project / public / पर सेट किया है, क्या यह सही है या रूट के लिए कुछ अन्य परिवर्तन करने की आवश्यकता है।
गोमजी

@Gomzy, हाँ, आपको सभी डोमेन को जोड़ने की आवश्यकता है /etc/hostsयदि कोई पंजीकृत डोमेन नहीं है जो आपके सर्वर को इंगित करता है। अपडेट किए गए उत्तर के निचले भाग में लिंक देखें।
pa4080

@ pa4080 यहां यदि आप होस्ट के लिए कोई डायनामिक वैल्यू जोड़ रहे हैं तो आपकी निर्धारित डायरेक्टरी बता रही है? क्योंकि जैसा कि मैं जाँच कर रहा हूँ आप केवल उन होस्ट में प्रवेश कर रहे हैं जिन्हें आपने मेजबान फ़ाइल में परिभाषित किया है। पूर्व: यदि आप xyz.myapp.local दर्ज करते हैं, तो होस्ट फ़ाइल में जोड़े बिना काम करेगा?
गोमज़ी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.