"प्रदान किया गया होस्ट नाम इस सर्वर के लिए मान्य नहीं है" क्या मतलब है?


64

मैं एक Drupal 8 वेबसाइट चला रहा हूं, और जब मैं किसी पृष्ठ पर ब्राउज़ करता हूं, तो मुझे उस पर केवल निम्न त्रुटि संदेश के साथ एक सादे सफेद पृष्ठ मिलता है।

प्रदान किया गया होस्ट नाम इस सर्वर के लिए मान्य नहीं है।

इसका क्या मतलब है? मैं यह कैसे तय करुं?


2
यदि आप स्थानीय विकास परिवेश को कॉन्फ़िगर करने के साथ इस समस्या को हल कर रहे हैं, तो यहां दिए गए समाधान देखें।
पैट्रिक केनी

जवाबों:


78

यह त्रुटि संदेश उस सुविधा से आ रहा है जिसे HTTP होस्ट हेडर के हमलों से बचाने के लिए Drupal 8 में जोड़ा गया था । फ़ीचर को उस परिवर्तन रिकॉर्ड में भी वर्णित किया गया है जो पैच के लिए उत्पन्न किया गया था।

अनिवार्य रूप से, नापाक उद्देश्यों के लिए HTTP होस्ट हेडर को बिगाड़ना और ड्रुपल को कई सबसिस्टम (विशेष रूप से लिंक पीढ़ी) में एक अलग डोमेन नाम का उपयोग करने के लिए धोखा देना संभव था । दूसरे शब्दों में, HTTP होस्ट हेडर को उपयोगकर्ता इनपुट माना जाना चाहिए, और विश्वसनीय नहीं।

इससे निपटने के $settings['trusted_host_patterns']लिए, "विश्वसनीय" होस्टनाम की एक सूची को कॉन्फ़िगर करने के लिए Drupal 8 में एक नई सेटिंग, जोड़ी गई थी जो साइट से चल सकती है। सेटिंग को नियमित अभिव्यक्ति पैटर्न की एक सरणी होने की आवश्यकता है, बिना सीमांकक के, उन होस्टनामों का प्रतिनिधित्व करने से जिन्हें आप चलाने की अनुमति देना चाहते हैं।

उदाहरण के लिए, यदि आप किसी एकल होस्टनाम "www.example.com" से अपनी साइट चला रहे हैं, तो आपको इसे अपनी सेटिंग्स में जोड़ना चाहिए (आमतौर पर पाया जाता है ./sites/default/settings.php):

$settings['trusted_host_patterns'] = array(
  '^www\.example\.com$',
);

नोट ^, \., और $। ये PCRE सिंटेक्स हैं । इनका मतलब यह है कि आप "www.example.com" से सटीक रूप से मेल खाना चाहते हैं, शुरुआत और अंत में कुछ भी अतिरिक्त नहीं है, और यह कि डॉट्स को डॉट्स के रूप में माना जाना चाहिए, न कि वाइल्डकार्ड वर्णों के साथ।

यदि आप "example.com" से भाग रहे हैं, तो बस उपयोग करें:

$settings['trusted_host_patterns'] = array(
  '^example\.com$',
);

यदि आपको कई डोमेन और / या उप-डोमेन की साइट चलाने की आवश्यकता है, और विहित URL पुनर्निर्देशन नहीं कर रहे हैं, तो आपकी सेटिंग कुछ इस तरह दिखाई देगी:

$settings['trusted_host_patterns'] = array(
  '^example\.com$',
  '^.+\.example\.com$',
  '^example\.org',
  '^.+\.example\.org',
);

यह साइट को example.com और example.org के सभी वेरिएंट को बंद करने की अनुमति देता है, जिसमें सभी उप-डोमेन शामिल हैं।

एक बार जब आप $settings['trusted_host_patterns']उचित मूल्य पर समायोजित हो जाते हैं, तो आपको अपनी साइट पर फिर से ब्राउज़ करने में सक्षम होना चाहिए।

आप अपनी विश्वसनीय होस्ट सेटिंग की स्थिति रिपोर्ट पृष्ठ से भी देख सकते हैं, जो कि व्यवस्थापक / रिपोर्ट / स्थिति पर है

यदि आप सेटिंग को पूरी तरह से हटा देते हैं, तो विश्वसनीय होस्ट तंत्र का उपयोग नहीं किया जाएगा, और आपको स्थिति रिपोर्ट पृष्ठ पर एक त्रुटि दिखाई देगी। इसके अतिरिक्त, आपकी साइट HTTP होस्ट हेडर हमलों के लिए भी असुरक्षित हो सकती है।

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


5
मैं पैच के लेखकों में से एक हूं, और पैच के लिए चेंज रिकॉर्ड का मूल मसौदा भी लिखा है (जो कि ऊपर दिए गए पाठ का एक बहुत कुछ है)। यह प्रश्न और उत्तर त्रुटि संदेश "उच्च googlability" देने के लिए है अगर कोई इसे सामना करता है। कृपया अपने स्वयं के उत्तर को जोड़ने के लिए स्वतंत्र महसूस करें यदि आपको लगता है कि आप इस सेटिंग को बेहतर ढंग से समझा सकते हैं। हम इसे सीडब्ल्यू बनाना भी समाप्त कर सकते हैं।
mpdonadio

Drupal सर्वर सीधे पहुंच योग्य नहीं है, लेकिन रिवर्स प्रॉक्सी के पीछे होने पर यह एक bazillion कॉन्फ़िगरेशन है। यह केवल एक उपद्रव है। एक साफ ऑप्ट-आउट तंत्र होना चाहिए।

मेरा मानना ​​है कि यह अब है, इसे इंस्टॉलर में स्वचालित रूप से सेट करने के प्रयास थे, लेकिन इसे अब के लिए फिर से हटा दिया गया था। यदि आप इसे विश्वसनीय होस्टनाम सेट नहीं करते हैं तो कोई सत्यापन नहीं होता है। इसके अलावा, मैंने केवल अब mpdonadio और MPD के बीच संबंध बनाया :)
Berdir

हाँ, ऑटो-कॉन्फ़िगरेशन को उस पैच से हटा दिया गया था जो प्रतिबद्ध था। यह वर्तमान में "ऑप्ट-इन है, लेकिन हम इसे सेट नहीं होने पर आपको चेतावनी देंगे"। इंस्टॉलर में इसे सेट करने के लिए एक फॉलोअप, drupal.org/node/2404259 है। @Berdir, मैं एक इंटरनेट पहचान संकट कुछ समय पहले किया था, और जब मैं यहाँ एक आधुनिक बन गया मैं अपने उपनाम :) मेरे Git उपयोगकर्ता नाम को बदलना है, तो अलग है, भी ... नहीं करना चाहता था
mpdonadio

जब मैं '^ थीमिंग \ _। डब्लू डब्लू $' का उपयोग करता हूं, तो मेरे पास यह त्रुटि होती है: त्रुटि संदेश अनपेक्षित विलेख: अविश्वासित होस्ट "लोकलहोस्ट" सिम्फनी में \ "घटक \ _ एचटीटीपीफ़ाउंडेशन \" अनुरोध-> गेटहोस्ट () (कोर / विक्रेता / सिम्फनी / http की पंक्ति 1221) नींव / Symfony / घटक / HttpFoundation / Request.php)।
एक्सल ब्रिके

6

लोकलहोस्ट इंस्टॉलेशन के लिए आप अपनी सेटिंग में निम्न कोड का उपयोग कर सकते हैं। फाइल

$settings['trusted_host_patterns'] = array(
   '^localhost$','^YOUR_IP_ADDRESS$'
 );

3

ऐसा इसलिए होता है क्योंकि trusted_host_patternsआपकी सेटिंग फ़ाइल में परिवर्तनशील है। यदि आप स्थानीय वातावरण पर काम कर रहे हैं और आप इसे ओवरराइड करना चाहते हैं, तो अपनी settings.local.phpफ़ाइल में निम्न अनुभाग को परिभाषित करें :

/*
 * Drupal Trusted Host Patterns
 */
$settings['trusted_host_patterns'] = [];

या अधिक सामान्य पैटर्न :

$settings['trusted_host_patterns'] = [ '.*' ];

या स्थानीय वातावरण के लिए अधिक विशिष्ट :

$settings['trusted_host_patterns'] = array(
  '^172\.20.\0.\3$',
  '^localhost$',
);

यह सबसे सरल समाधान है, लेकिन अनुशंसित नहीं है क्योंकि आपको नापाक उद्देश्यों के लिए HTTP होस्ट हेडर को स्पूफ करने से बचने के लिए उचित मान सेट करना चाहिए। यदि आपकी वेबसाइट केवल आपके स्थानीय पर चल रही है, तो आपको ठीक होना चाहिए।

देखें: विश्वसनीय होस्टनाम कॉन्फ़िगरेशन के लिए नई सेटिंग


1
इस उत्तर के लिए आपके पास अधिक upvotes होना चाहिए क्योंकि यह settings.local.php फ़ाइल के उचित उपयोग को परिभाषित करता है। इन सेटिंग्स को शायद settings.php में परिभाषित नहीं किया जाना चाहिए, यह आपके स्थानीय वातावरण के लिए एक अलग सेटिंग्स फ़ाइल होने के उद्देश्य को हरा देती है जिसे 3 # वर्णों के साथ चालू / बंद किया जा सकता है। स्थानीय सेटअप पर एक लिंक या कुछ जानकारी अधिक वोट कमा सकती है।
डिममेच

2

आपके पास होने पर यह समस्या भी होगी

<VirtualHost *:443>

जब आपके पास होना चाहिए

<VirtualHost *:80>

एक गैर-एसएसएल सेटअप (जैसे देव / परीक्षण वातावरण के लिए) में स्थापित किया गया और पोर्ट 80 पर साइट तक पहुंचने का प्रयास करें


0

यह सेवा के विश्वसनीय होस्ट कॉन्फ़िगरेशन के कारण है। जब आप डोमेन नाम बदलते हैं या यह उत्पादन कर सकते हैं 'trusted_host_patterns'। Probleme को हल करने के लिए अपने नए डोमेन जोड़ने DRUPAL_ROOT/sites/SITE_FOLDER/settings.php(उदाहरण: sites/defaults/settings.php)

उदाहरण: डोमेन नाम = newdomain.com

$settings['trusted_host_patterns'] = array(
  '^newdomain.com\.loc$',
  '^www\.newdomain.com\.loc$',
);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.