अपाचे में बेजोड़ डोमेन / उप डोमेन के लिए डिफ़ॉल्ट हैंडलिंग


12

मेरे पास कई VirtualHosts के साथ Apache2 कॉन्फ़िगरेशन है। मेरा DNS *.<domain>.<tld>कई डोमेन पर स्वीकार करने के लिए तैयार है । सब कुछ सही ढंग से काम कर रहा है, लेकिन अगर मैं जाता something-random-here.example.comहूं तो मुझे लगता है कि एक अवैध वर्चुअलहॉस्ट चुना जा रहा है (मुझे लगता है कि पहला या आखिरी अनुमान लगा रहा है)। अगर अपाचे को कुछ नियमों का उपयोग करने के लिए बताने का एक तरीका है, तो कोई भी वर्चुअलहॉस्ट प्रविष्टियाँ डोमेन या उपडोमेन से मेल नहीं खाती हैं? मैं अधिमानतः 404 वापस करना चाहूंगा।

जवाबों:


12

यदि कोई नाम मेल नहीं खाता है, तो अपाचे पहली वर्चुअलाइजेशन का उपयोग करता है। बस एक नया वर्चुअलहॉस्ट को एक यादृच्छिक नाम के साथ पहले कॉन्फ़िगर करें, जो कुछ भी आप चाहते हैं उसे प्रदर्शित करें - या 404 पृष्ठ लौटाएं।


धन्यवाद, लेकिन क्या आप विस्तृत कर सकते हैं? मैं यह काम करने के लिए नहीं मिल सकता।
रयाल

2
आपकी Apache2 कॉन्फ़िगरेशन फ़ाइलें कैसे बाहर रखी गई हैं? या आप किस ऑपरेटिंग सिस्टम का उपयोग करते हैं? अपाचे कॉन्फ़िगरेशन को एक निश्चित क्रम में पढ़ता है, और यह देखने वाला पहला वर्चुअलहॉस्ट डिफ़ॉल्ट है। यह अज्ञात होस्ट नामों से सभी ट्रैफ़िक प्राप्त करता है। इसलिए यदि आपके पास एकल कॉन्फ़िगरेशन फ़ाइल है, तो पहला VirtualHost यह है। यदि आपके पास बहुत सारे हैं, जैसे कि अधिकांश linuxes पर, तो यह 0default या ऐसा कहा जा सकता है ...
Moritz दोनों

मैं कुछ डिफ़ॉल्ट विन्यास में डाल दिया ports.conf। यह काम नहीं कर रहा था क्योंकि मैंने अपने virtualhost पर <ip>: 80 का उपयोग करते समय *: 80 से मिलान करने का प्रयास किया। इसके बजाय मुझे प्रत्येक आईपी के लिए एक अलग डिफ़ॉल्ट प्रविष्टि बनानी पड़ी और यह अब काम करता है।
Ryall

न तो मेरी पहली या अंतिम v- होस्ट फ़ाइल का उपयोग किया जाता है। मुझे लगता है कि अपाचे बदल गया है।
कोबोल्ट

4

वाइल्डकार्ड में आपकी साइट कॉन्फ़िगरेशन फ़ाइलें शामिल हैं:

Include path/to/site/confs/*httpd.conf

अपनी साइट की गोपनीय फाइलों को व्यवस्थित करें ताकि वे एक अपेक्षित क्रम में लोड हो जाएं। उदाहरण...

01-httpd.conf

02-site1-httpd.conf

03-site2-httpd.conf

आदि...

अपाचे इन्हें क्रम में पढ़ेंगे। फिर एक ऐसा बनाएं जो किसी भी बेजोड़ वर्चुअल होस्ट को पकड़ने के लिए हमेशा आखिरी लोड करेगा और डिफ़ॉल्ट साइट लोड करने के बजाय 404 लौटाएगा।

99-मोहक-httpd.conf

<VirtualHost *:8080>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

<VirtualHost *:8443>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

अपने httpd पर जो भी पोर्ट सुनते हैं, उन पोर्ट को बदलना न भूलें। या यदि आपके पास httpd विशिष्ट इंटरफेस पर सुनना है, तो आपको इसके बजाय प्रत्येक इंटरफ़ेस के लिए एक catchall जोड़ना होगा, जैसे:

<VirtualHost 192.168.1.101:8080>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>
<VirtualHost 192.168.1.101:8443>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

<VirtualHost 192.168.1.102:8080>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

<VirtualHost 192.168.1.102:8443>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

उम्मीद है की यह मदद करेगा। मैं इस विधि का उपयोग उन साइटों को लोड करने के लिए करता हूं, जो मैं निर्दिष्ट करता हूं और अनपेक्षित वर्चुअल होस्ट को अनपेक्षित रूप से अनपेक्षित साइट लोड करने से रोकता हूं।


क्या "ServerAlias ​​*" को कैच-ऑल नियम से नहीं हटाया जाना चाहिए?
अहम 3d

मुझे लगता है कि यह कोई फर्क नहीं पड़ेगा। यदि कैटचेल से पहले कोई भी वर्चुअल होस्ट अनुरोध को नहीं संभालता है, तो ये 404 प्रतिक्रिया देगा। मुझे एक कारण नहीं दिखता है कि ServerAlias ​​* को हटाना पड़ेगा, लेकिन वे अनावश्यक रूप से विशिष्ट हो सकते हैं।
जेसन स्लोबोट्सकी

0

Moritz Bothउल्लेख के रूप में, अपाचे 2 पहली वर्चुअल होस्ट का उपयोग करेगा जो यह पाता है कि यह आपके द्वारा अनुरोधित किसी से मेल नहीं खाती है।

जब आप पहली बार Apache2 स्थापित करते हैं, तो एक डिफ़ॉल्ट वेबसाइट होती है, जिसका उपयोग आप टेम्पलेट के रूप में कर सकते हैं, संशोधित या हटा सकते हैं, और मैं हमेशा सोच रहा था कि 000-default.conf वास्तव में क्या था, क्योंकि उनके पास default.conf भी था। क्या Moritz Bothकहा पढ़ने के बाद , यह सब अब और अधिक समझ में आता है।

मुझे अपने सर्वर के लिए किया था 000 default.conf फ़ाइल और करने के लिए डिफ़ॉल्ट होस्ट नाम (वेबसाइट) के लिए config नकल था a2ensite 000-default

अब, हर बार मेरी वेबसाइट पर एक बेजोड़ डोमेन अनुरोध होता है, यह 000-डिफ़ॉल्ट पृष्ठ पर कार्य करता है, जो कि मेरे वास्तविक डिफ़ॉल्ट पृष्ठ की एक प्रति है।


1
मैं भी ऐसा ही करता हूं, लेकिन मेरा संयुक्त मिलान / डिफ़ॉल्ट होस्ट उचित शीर्ष स्तर की साइट पर एक रीडायरेक्ट भेजता है जो प्रदर्शित URL को सही रूप में अच्छी तरह से बदल देता है।
ivanivan

यह एक बहुत अच्छा विचार है! मैंने उसके बारे में नहीं सोचा। मैं निश्चित रूप से अपनी साइट को इस तरह लागू करूंगा :)
न्यूटेक् डेवलपर

किसी कारण से, मैं अपने ssl (डिफ़ॉल्ट पृष्ठ) को पुनर्निर्देशित नहीं कर सकता। मेरे पास है, <VirtualHost *:443> ... Redirect / https://baseurl/ ... </VirtualHost> लेकिन url वही है। मैंने गैर-एसएसएल संस्करण के लिए भी ऐसा ही किया है और यह सही ढंग से पुनर्निर्देशित करता है। कोई विचार?
न्यूटेक डेवलपर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.