Apache किसी विशेष साइट के लिए ServerName निर्देश का सम्मान नहीं कर रहा है


9

मैं कुछ साइटों को अपाचे का उपयोग करते हुए VirtualHosts के रूप में कॉन्फ़िगर किया गया हूं जो थोड़ी देर के लिए ठीक काम कर रहे हैं। मैंने हाल ही में सर्वर के होस्टनाम को डोमेन नाम में से एक में बदला जा रहा है जिसे परोसा जा रहा था, और इसे सर्वर के बाहरी आईपी पते की ओर इशारा करते हुए / आदि / होस्ट में भी जोड़ा।

जब से मैंने ऐसा किया, मेरे लैपटॉप से ​​डोमेन एक्सेस करना मुझे अपाचे के डिफ़ॉल्ट "यह काम करता है!" पृष्ठ। यदि मैं / etc / apache2 / sites-enable / से 000-डिफॉल्ट निकालता हूं, तो यह सही साइट प्रदर्शित करता है। साइट को 'www' से एक्सेस करने की कोशिश कर रहा है। उपसर्ग मुझे सही साइट पर ले जाता है, चाहे साइटों को सक्षम करने में 000-डिफ़ॉल्ट हो या न हो।

इन सबके आधार पर, मैं अनुमान लगा रहा हूं कि डिफॉल्ट कॉन्फिग डिफ़ॉल्ट पेज पर काम कर रहा है क्योंकि मैंने होस्टनाम या / आदि / होस्ट (या दोनों) को कैसे कॉन्फ़िगर किया है, लेकिन मैं यह पता नहीं लगा सकता कि इसे कैसे निष्क्रिय किया जाए उन सेटिंग्स को छोड़कर जैसे वे हैं। किसी भी सुझाव का स्वागत है!

संपादित करें - मेरा वर्तमान VirtualHost कॉन्फिग इस तरह दिखता है:

<VirtualHost *:80>
    ServerName domain.com
    ServerAlias www.domain.com
    ServerAdmin me@domain.com

    DocumentRoot /srv/www/domain

    ErrorLog /srv/www/domain/logs/error.log
    CustomLog /srv/www/domain/logs/access.log combined
</VirtualHost>

संक्षेप में: मेरे पास कई VirtualHosts स्थापित हैं, और यह एकमात्र ऐसा है जो ठीक से काम नहीं कर रहा है। मैं http://www.domain.com पर ठीक पहुँच सकता हूँ , लेकिन http://domain.com मुझे अपाचे के डिफ़ॉल्ट "यह काम करता है!" पृष्ठ। यदि मैं 000-डिफ़ॉल्ट कॉन्फिगर को अक्षम करता हूं तो यह उचित पेज दिखाता है। सर्वर के hostname को domain.com पर सेट करने के बाद ही यह शुरू हुआ और सर्वर के बाहरी आईपी पते पर domain.com को होस्ट करने के लिए / etc / host के लिए एक लाइन जोड़ी। अगर संभव हो तो मैं उन्हें इस तरह छोड़ना चाहूंगा।

संपादित करें:apache2ctl -S जब से /usr/sbin/apache2 -Sमुझे "apache2: bad user name $ {APACHE_RUN_USER}" दिया गया, मैं भाग गया । यहाँ उत्पादन है:

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server domain.com (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost domain.com (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost other.com (/etc/apache2/sites-enabled/other:1)
         port 80 namevhost another.com (/etc/apache2/sites-enabled/another:1)
         port 80 namevhost domain.com (/etc/apache2/sites-enabled/domain:1)
Syntax OK

क्या domain.com को मुख्य httpd.conf फ़ाइल पर ServerName के रूप में उपयोग किया जा रहा है? या apache2ctl.conf आप ubuntu का उपयोग कर रहे हैं ताकि यह नाम अलग हो सकता है।
प्रिक्स

जवाबों:


12

दूसरे दिन यह प्रश्न खो दिया।

जब आपके पास Servername घटक के बिना <VirtualHost> कंटेनर है, तो यह डिफ़ॉल्ट होस्टनाम का उपयोग करेगा। 000-डिफ़ॉल्ट के रूप में संभवतः ServerName घटक नहीं है, और इसमें शामिल होने वाला पहला वर्णानुक्रम है, यही कारण है कि यह hostname.com के लिए उत्तर देता है और आपके स्पष्ट रूप से घोषित होस्टनाम को काम करने की अनुमति नहीं देता है।


मैं देख रहा हूँ, इसे ठीक करने का कोई तरीका? मैं किसी भी अनहेल्ड डोमेन को संभालने के लिए डिफ़ॉल्ट कॉन्फिग चाहता हूं, लेकिन मैं यह नहीं चाहता कि वह उस विशेष डोमेन को हैंडल करे।
जॉन डेब्स

इसे एक डोमेन के अलावा एक अन्य का उपयोग करें जो कि एक विन्यास में प्रयोग किया जाता है, या इसे ज़ज़-डिफॉल्ट में बदल दें ताकि इसे अंतिम कहा जाए।
कर्मवहोर

ठीक है, मुझे लगता है कि मैं यह सब अब समझता हूं। मैंने zzz-default की कोशिश की, लेकिन यह सटीक व्यवहार नहीं है जो मैं चाहता था। ServerName example.comडिफ़ॉल्ट कॉन्फ़िगरेशन में सेट करना बहुत अच्छा काम करता है, हालाँकि। धन्यवाद!
जॉन डेब्स

4

क्या आपके पास NameVirtualHost * है: 80 निर्देश कहीं?

प्रयत्न:

/usr/sbin/apache2 -S

यह आपको बताएगा कि अपाचे कॉन्फ़िगर फ़ाइल को कैसे पार्स कर रहा है। क्या आपके पास ऐसे कॉन्फ़िगर हैं जिनके पास वास्तविक IP हैं या सभी के पास * है? क्या आपके पास कोई लापता है: 80? अपाचे उन मिश्रण की तरह नहीं है।

क्या आपके पास डिफ़ॉल्ट में ServerName domain.com या ServerAlias ​​domain.com है?


हाँ, मैंने इसे अपने /etc/apache2/posts.conf में प्राप्त कर लिया है। मैं इस सवाल का एक सारांश जोड़ूंगा कि उम्मीद है कि यह अधिक स्पष्ट है।
जॉन डेब्स

मेरा 000-डिफ़ॉल्ट कॉन्फ़िगरेशन अछूता है, इसमें कोई Servername या ServerAlias ​​निर्देश नहीं है।
जॉन डेब्स

NameVirtualHost पदावनत है।
सैम

1

VirtualHost निर्देश में ServerName और ServerAlias ​​की जाँच करें:

<VirtualHost *:80>
ServerName domain
ServerAlias www.domain.com
ServerAlias *.domain.com
</VirtualHost> 

पढ़ें: http://httpd.apache.org/docs/2.2/mod/core.html#serveralias , http://httpd.apache.org/docs/2.2/vhosts/


यह मूल रूप से है कि चीजें अब कैसे स्थापित की जाती हैं। मैंने प्रश्न में अपना कॉन्फिगर पोस्ट किया।
जॉन डेब्स

0

यह काम किया:

<VirtualHost *:80>
    DocumentRoot /var/www/www.mydomain.com
    ServerName mydomain.com
    ServerAlias www.mydomain.com
</VirtualHost>

जब मेरे पास एक टाइपो था, तो यह काम नहीं किया था (दो बार ServerName निर्देश):

<VirtualHost *:80>
    DocumentRoot /var/www/www.mydomain.com
    ServerName mydomain.com
    ServerName www.mydomain.com
</VirtualHost>

जब मेरे पास ServerName निर्देश दो बार था, तो यह सूचीबद्ध पहली साइट (यहां नहीं दिखाया गया) का समाधान करता रहा।

उम्मीद है कि यह किसी की मदद करता है ...


0

मुझे एक समान समस्या थी, और इसे स्पष्ट रूप से मुख्य httpd.conf फ़ाइल में एक ServerName सेट करके तय किया था, बजाय Apache स्वचालित रूप से यह पता लगाने की अनुमति देने के बजाय। मुझे लगता है कि अपाचे ने जो फैसला किया, वह मेरे vhost (बाद में परिभाषित) के समान था, इसलिए डिफ़ॉल्ट एक "जीता", जो कि vhost सेटिंग को ओवरराइड करता है।

मैंने बस httpd.conf ServerName को एक होस्टनाम के लिए सेट किया है जो मशीन के पास है, मैं कभी भी इसके लिए वेबपृष्ठ नहीं बनाउंगा।

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