होस्टनाम के साथ जुड़े की तुलना में एक अलग आईपी पर एक वेबसाइट देखने का आसान तरीका?


1

कुछ पृष्ठभूमि - वर्डप्रेस वास्तव में इस बात से नाराज है कि आप किस होस्टनाम से इसे एक्सेस करते हैं, जो परीक्षण वातावरण को दर्दनाक बनाता है (अर्थात, मैं मंचन के लिए एक उपडोमेन बना सकता हूं, y.x.com, लेकिन तब वर्डप्रेस डेटाबेस के सभी लिंक वहां से होने के नाते सेट करेगा और नहीं x.com, (जहां मैं डीएनएस चेंजओवर करता हूं) वे जैसे ही होंगे इसके आस-पास जाने के लिए, मैंने अपने / etc / मेजबान फ़ाइल में एक उपनाम सेटअप किया है, इसलिए मुझे WP की सेटिंग में डोमेन नाम को बदलते नहीं रखना है।

दूसरे शब्दों में: अभी मेरे पास आईपी पर एक लाइव साइट चल रही है x और होस्टनाम x.com। मैं लाइव साइट को छोड़ना चाहता हूं, और आईपी में एक मचान मशीन स्थापित करना चाहता हूं yहोस्टनाम के माध्यम से पहुँचा x.com, पूर्वोक्त में एक प्रविष्टि का उपयोग कर /etc/hosts

मेरा प्रश्न: मैं क्लाइंट को स्टेजिंग मशीन को उनके / etc / होस्ट फ़ाइल को संपादित किए बिना कैसे दिखाऊँ? क्या कोई ऑनलाइन सेवा है जो एक iframe को सेटअप करती है और आपको एक विशेष होस्टनाम के रूप में एक विशेष आईपी दिखाती है?

धन्यवाद!

संपादित करें: मैं यह नहीं पूछ रहा कि अपने DNS रिकॉर्ड को कैसे सेटअप किया जाए; वे इस समय के लिए अच्छे हैं। मैं स्टेजिंग मशीन में अपने आईपी को एड्रेस बार में टाइप करके ब्राउज़ कर सकता हूं, और वर्डप्रेस लोड और सब कुछ बढ़िया है, सिवाय सभी लिंक x.com, और उन्हें क्लिक करके मुझे लाइव / प्रोडक्शन साइट पर ले जाता है। मैं अपनी स्थानीय मशीन में प्रविष्टि डालकर इसे ठीक कर सकता हूं hosts फ़ाइल (यानी, /etc/hosts ), जो सार्वजनिक DNS रिकॉर्ड्स को लाइव साइट पर ले जाता है और इसके बजाय मुझे स्टेजिंग मशीन दिखाता है। मैं अनिवार्य रूप से अपने ग्राहक के लिए यह आसानी से करने का एक तरीका चाहता हूं, वह यह है कि उसके बिना उसे संपादित करना है hosts फ़ाइल।


1
आप डीएनएस रिकॉर्ड क्यों नहीं बदलते हैं?
Mehraban

@SAM क्योंकि वर्तमान में एक मौजूदा लाइव साइट चल रही है और अगर मैं DNS रिकॉर्ड को बदल दूंगा तो यह ऑफ़लाइन हो जाएगी।
aendrew

जवाबों:


1

अन्य सर्वर के लिए मानचित्र x.com/staging

यह मानते हुए कि आप अपाचे पर चल रहे हैं, प्रॉक्सी चाल कर सकता है। अपाचे में एक रिवर्स प्रॉक्सी चला रहा है निम्नलिखित कार्य करने का सुझाव देते हैं, लेकिन मैंने इसका परीक्षण नहीं किया:

ProxyPreserveHost on
ProxyPass /staging/ http://y.y.y.y/
ProxyHTMLURLMap http://y.y.y.y /staging

<Location /staging/>
    ProxyPassReverse /
    ProxyHTMLEnable On
    ProxyHTMLURLMap / /staging/
    # We need to peek into the HTML, so ensure we don't get gzip'd content:
    RequestHeader unset Accept-Encoding
</Location>

ऊपर, एक आभासी फ़ोल्डर /staging नक्शे सभी से http://x.com/staging/ सेवा मेरे / अन्य आईपी पते पर। अभी भी उपयोग करने के लिए x.com मेजबान के रूप में, मैंने जोड़ा ProxyPreserveHost

इस सब के लिए पीछे चल रहे स्लैश की आवश्यकता होगी; कुछ मानक पुनर्लेखन जब आवश्यक हो तो जोड़ सकते हैं:

# Add trailing slash if omitted
RewriteRule ^staging$ /staging/ [R=302,L]

कुकीज़ साझा करने से बचें: एक समर्पित डोमेन का उपयोग करें

हालांकि, सत्र कुकीज़ के साथ बहुत खराब समस्याओं से बचने के लिए, मैं एक समर्पित डोमेन (अधिमानतः कुछ उपडोमेन भी नहीं) पसंद करूंगा x.com )। उसके लिए, सभी संदर्भ निकालें staging ऊपर। और अभी भी अपेक्षित डोमेन नाम भेजने के लिए, मुझे लगता है कि कोई अतिरिक्त जोड़ सकता है:

RequestHeader set Host x.com

इस तरह के समर्पित डोमेन का उपयोग करने के बाद अपाचे को किसी भी संबंधित URL को फिर से लिखना नहीं पड़ेगा, जैसे कि /some/page में /staging/some/page। हालाँकि, इसका अर्थ यह हो सकता है कि आप निरपेक्ष URL को लिखने में विफलताओं को नोटिस नहीं करेंगे (विशेषकर जब जावास्क्रिप्ट शामिल है)। फिर से लिखने में विफलता की तरह http://x.com/some/page में वापस http://client.mycompany.com/some/page यदि एक ही URL प्रोडक्शन सर्वर पर मौजूद है, तो ब्राउजर किसी का ध्यान नहीं जा सकता है। जब आप अभी भी उत्पादन सर्वर में लॉग इन कर रहे हैं, तो यह एक लाभ हो सकता है, या एक आपदा हो सकती है सोच आप मंचन सर्वर पर सामग्री बदल रहे हैं ...

.Htaccess का उपयोग करना

बस के बाद के लिए, पहले मुझे लगा कि एक भी निम्नलिखित में से कुछ का उपयोग कर सकता है .htaccess फ़ाइल:

# Does NOT work (for me). On the target server, this gets me:
#   HTTP_HOST = y.y.y.y            - from the proxy request? Expected x.com
#   HTTP_X_FORWARDED_HOST = x.com  - from Host
#   HTTP_X_MY_DUMMY = x.com        - from X-My-Dummy, as expected

RewriteEngine On
RequestHeader set Host x.com 
RequestHeader set X-My-Dummy x.com
RewriteRule ^(.*) http://y.y.y.y/$1 [L,P] 
ProxyPassReverse / http://y.y.y.y/

हालाँकि, ProxyPassReverse में अनुमति नहीं लगती है .htaccess। और कुछ बुनियादी परीक्षण से पता चलता है कि [P] छद्म भी हमेशा अपने खुद को जोड़ता है Host हेडर, और मेरे अनुवाद Host में X-Forwarded-Host। यह बहुत अच्छी तरह से साझा की गई वर्चुअल होस्टिंग से संबंधित हो सकता है जिसका मैंने कुछ त्वरित परीक्षण के लिए उपयोग किया था। परंतु ProxyPreserveHost में इस्तेमाल नहीं किया जा सकता है .htaccess

देखें अपाचे का mod_proxy , mod_headers तथा mod_rewrite प्रलेखन।


मेरे पास एक वर्चुअलहोस्ट के रूप में यह सेटअप है और ऐसा लगता है कि यह काम नहीं कर रहा है - y.y.y.y मचान मशीन के दोनों उदाहरणों में, सही है आईपी? हालांकि एक ठोस दृष्टिकोण की तरह लगता है; मैंने Nginx के साथ अतीत में कुछ ऐसा ही किया है
aendrew

Yup, @aendrew, y.y.y.y यह मंचन का IP पता है कोई त्रुटि? (मैं कल से करीब 10 घंटे या उससे अधिक समय के लिए करीब आ सकता हूं ...)
Arjan

@ मुझे भेजा, मेरा परीक्षण भी विफल रहा; संपादित उत्तर देखें।
Arjan

और Nginx के लिए, हो सकता है ये उदाहरण हैं मदद कर सकते है। बेशक, Nginx के साथ एक ही मुद्दा दिखा सकता है proxy_set_header अपाचे के रूप में RequestHeader set, जब बदलने की कोशिश कर रहा है Host
Arjan

किसी भी भाग्य, @aendrew?
Arjan

1

आप एक ही होस्टनाम को अलग-अलग आईपी के लिए बाँध नहीं सकते हैं या तो आपको अपने DNS रिकॉर्ड्स को एडिटिंग मशीन की ओर डोमेन को इंगित करने के लिए संपादित करना होगा या आपको होस्ट फ़ाइल के माध्यम से स्थानीय होस्ट रिज़ॉल्यूशन परिवर्तन करना होगा।

इसके अलावा आप अपनी साइट के साथ चल रहे PHP या अन्य भाषा के माध्यम से एक चेक / कंडीशन वैरिएबल जोड़ सकते हैं, अगर वर्तमान में आपकी वेबसाइट को स्टेजिंग मशीन पर खोला जाएगा उदाहरण के लिए http://examplesite.com/?staging=true


जबकि सच है, उप डोमेन अलग-अलग आईपी पते हो सकते हैं। (यदि कोई पाठक नहीं जानता है तो बस
Arjan

आह हाँ उपडोमेन भी एक विकल्प हो सकता है :)
Saurabh Sharma

वास्तव में आप कर सकते हैं। इसका उपयोग अक्सर एक सरल लचीला सेवा बनाने के लिए किया जाता है। यहाँ मदद नहीं करेगा क्योंकि पहली प्रविष्टि हमेशा जवाब देगी।
Julian Knight

@ अर्जन हां, मैं एक उपडोमेन बना सकता हूं, y.x.com, लेकिन तब वर्डप्रेस वहाँ से होने के नाते सभी लिंक सेट करेगा और नहीं x.com, जहां वे हैं, जैसे ही मैं डीएनएस चेंजओवर करता हूं। काश, मैं ऐसा नहीं कर सकता, जब तक मुझे क्लाइंट से साइन-ऑफ नहीं मिल जाता, और उन्हें पहले इसे देखने की जरूरत होती है। मुझे पता है कि मैं बस वर्डप्रेस पर सेटअप कर सकता हूं y.x.com और फिर उपयोग करें WP_RELOCATE में निर्देश wp-config.php, जो सभी लिंक को बदल देगा, लेकिन फिर मुझे हर बार एक अद्यतन डंप पुश करने पर अधिक डीबी काम करना होगा।
aendrew

@ सौरभशर्मा दो साइटें अलग-अलग मशीनों पर हैं, मुझे नग्नेक्स का एक समूह स्थापित करना होगा proxy_pass उस काम को सही तरीके से करने के निर्देश, और उस समय मैं अर्जन के सुझाव के अनुसार इसे सिर्फ एक उप-डोमेन पर रख सकता हूं। मैं वास्तव में एक विशिष्ट आईपी पते को देखने के लिए एक रास्ता ढूंढ रहा हूं, लेकिन एक विशिष्ट भेजें Host हेडर ताकि लिंक काम और Whathaveyou
aendrew

1

दूसरा तरीका एक सामान्य प्रॉक्सी सर्वर है (जैसे स्क्वीड ) और एक संपादन /etc/hosts प्रॉक्सी सर्वर पर।

जब आप HTTP प्रॉक्सी का उपयोग करते हैं, तो क्लाइंट का ब्राउज़र x.com के लिए कोई DNS लुकअप नहीं करता है, लेकिन प्रॉक्सी सर्वर से जुड़ता है और इसे x.com से कनेक्ट करने के लिए कहता है। क्योंकि आपने प्रॉक्सी सर्वर पर किसी अन्य आईपी के लिए x.com को झुका दिया है, तो आपको चरणबद्ध सर्वर से परिणाम मिलते हैं।


जाने के लिए एक दिलचस्प तरीके की तरह लगता है - किसी भी विन्यास युक्तियाँ है?
aendrew

मैं खुद इस सर्वर का एक उपयोगकर्ता हूं - लेकिन आपको कुछ विशेष की आवश्यकता नहीं है - आपको केवल आधार कॉन्फ़िगरेशन की आवश्यकता है (कठोर इसलिए कि आप सभी के लिए एक खुला प्रॉक्सी प्रदान नहीं करते हैं)। आप अर्जन और मेरे उत्तर को जोड़ सकते हैं - इसमें "प्रॉक्सी" के साथ 2 पंक्तियों का उपयोग करें (फिर से लिखे या हेडर के बिना) और / etc / मेजबान फ़ाइल को बदलें।
Ronny Lindner

यदि प्रॉक्सी DNS लुकअप करता है, तो HTTPS कैसे काम करता है? (एक तरफ नए विस्तार, एसएसएल में बहुत पहले चरण केवल आईपी पते पर आधारित होते हैं, न कि होस्ट नामों पर, सही?)
Arjan

हम्म, अच्छा सवाल - मुझे पता है कि यह निश्चित रूप से मेरे द्वारा उपयोग किए जा रहे प्रॉक्सी के साथ https और http के लिए काम करता है। कल मैं विन्यास को देख सकता हूं और देख सकता हूं कि क्या इसमें कोई चाल है।
Ronny Lindner

मैंने स्क्वीड.कॉन्फ़ सेटिंग्स को देखा और वहाँ कोई जादू नहीं चल रहा है - यह एक मानक स्क्विड.कॉन्फ़ है, जिसमें एक लैपप के पीछे बैकएंड है ताकि यह कोई खुला प्रॉक्सी न हो। Https भाग के लिए - मुझे नहीं पता कि यह कैसे काम करता है, लेकिन मुझे स्टेजिंग सर्वर का प्रमाण पत्र मिलता है और प्रॉक्सी पर कोई भी प्रमाणपत्र कॉन्फ़िगर नहीं किया गया है।
Ronny Lindner
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.