सवाल मैं सबडोमेन को उसी सर्वर पर किसी भिन्न पोर्ट पर रीडायरेक्ट कैसे करूं?


मेरे पास कुछ सबडोमेन हैं जो मैं एक ही सर्वर पर विशिष्ट बंदरगाहों पर रीडायरेक्ट करना चाहता हूं। कहो मेरे पास है

dev.mydomain.com 

मुझे चाहिए dev.mydomain.com पारदर्शी रूप से रीडायरेक्ट करने के लिए mydomain.com:8080 और मैं मूल उप डोमेन नाम ब्राउज़र के यूआरएल को संरक्षित करना चाहता हूं।

अपाचे 2.2 के साथ मैं यह कैसे करूं? मेरे पास अपाचे 2.2 डिफ़ॉल्ट पोर्ट पर चल रहा है 80। ऐसा होने के लिए मैं लिखने की कॉन्फ़िगरेशन नहीं समझ सकता।

मैं पहले ही स्थापित कर चुका हूं dev.mydomain.com DNS में हल करने के लिए mydomain.com

यह इंट्रानेट डेवलपमेंट सर्वर के लिए है जिसमें गैर-रूटेबल आईपी है   पता इसलिए मैं शोषण और सुरक्षा के बारे में इतना चिंतित नहीं हूं   सार्वजनिक रूप से सामना करने वाले सर्वर से समझौता करेगा।


60
2017-10-28 00:57


मूल




जवाब:


उपाय

माइल्स एरिक्सन द्वारा सही दिशा में सेट होने के बाद मैं आखिरकार आया था। मैं पता बार चाहता था कि अनुरोध के मूल सबडोमेन / डोमेन को प्रतिबिंबित किया जाए, न कि पुनर्निर्देशित सर्वर और बंदरगाह, लेकिन उसने मुझे Google को सही तरीके से उपयोग करने के लिए सही रास्ते पर रखा VirtualHost और अंततः मुझे एक समाधान मिला जिसमें इसका उपयोग शामिल था mod_proxy

<VirtualHost *:80>
    ServerAdmin me@mydomain.com
    ServerName dev.mydomain.com
    ProxyPreserveHost On

    # setup the proxy
    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
    ProxyPass / http://localhost:8888/
    ProxyPassReverse / http://localhost:8888/
</VirtualHost>

64
2017-10-28 15:36



जिन लोगों के लिए यह उत्तर काम नहीं करता है, उनके लिए ध्यान रखें कि आपको मोड सक्षम करना होगा mod_proxy साथ ही साथ proxy_http। - matewka


यह मानते हुए कि dev.mydomain.com को mydomain.com के आईपी में हल किया जा सकता है, आप अपने httpd.conf में निम्नलिखित जोड़ सकते हैं:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName dev.mydomain.com
    redirect / http://mydomain.com:8080/
</VirtualHost>

प्रासंगिक अपाचे दस्तावेज़:

  1. नाम-आधारित वर्चुअल होस्ट बनाने के लिए मार्गदर्शिका
  2. कोर, समेत VirtualHost तथा NameVirtualHost
  3. पुन: निर्देशित

संबंधित प्रश्न: होस्ट नाम के आधार पर अपाचे रीडायरेक्ट

(नोट: इस उत्तर के मूल संस्करण ने गलत तरीके से RedirectMatch के उपयोग का सुझाव दिया है, जिसे @ChrisS ने मदद से इंगित किया है, यूआरएल के डोमेन हिस्से को पार्स नहीं कर सकता है।)


10
2017-10-28 01:18



मेरे द्वारा वास्तव में उपयोग किए जाने वाले कार्यों के लिए मेरा स्वयं प्रदान किया गया उत्तर देखें, जो वर्डप्रेसहोस्ट का यह विचार है कि mod_proxy के साथ रीडायरेक्ट करने के बजाए मूल होस्ट को संरक्षित किया जाए। यह एक आंतरिक सर्वर है इसलिए मैं mod_proxy की सुरक्षा या शोषण से चिंतित नहीं हूं। - Jarrod Roberson
कई अन्य सुझाव मिले लेकिन अंततः विंडोज सर्वर 2008 आर 2 / अपाचे 2.2.25 पर मेरे लिए काम किया। - HPWD
इस समाधान के साथ समस्या यह है कि आपके भाई में, आप पहले डोमेन पर नहीं रहते हैं, आपको दूसरे को 302 मिलते हैं। - Pleymor


निम्नलिखित मुख्य पंक्तियों में अपने मुख्य vhost विन्यास में जोड़ें:

ProxyPreserveHost On
ProxyPass / http://example.com:8080/
ProxyPassReverse / http://example:8080/

ध्यान दें कि इसे अपाचे पर mod_proxy की आवश्यकता है।


6
2017-10-28 02:01



यह एक रीडायरेक्ट नहीं है; यह कनेक्शन प्रॉक्सी करता है। यदि आप इसे बहुत सावधानीपूर्वक कॉन्फ़िगर नहीं कर रहे हैं तो mod_proxy को सक्षम करना बेहद आसान हो सकता है। मैं इसके खिलाफ अत्यधिक अनुशंसा करता हूं। - Chris S
वह अपने ओपी के अनुसार, एक रीडायरेक्ट नहीं चाहता है। वह चाहता है कि मूल यूआरएल पता बार में रहे; इसका मतलब है mod_proxy या mod_rewrite का उपयोग करना, और आप mod_rewrite से बेहतर ढंग से बचें। - adaptr


आप mod_rewrite की तलाश में हैं। अपाचे के दस्तावेज का लिंक यहां दिया गया है जिसमें कई उदाहरण शामिल हैं बुनियादी तथा उन्नत विन्यास ..

और यदि आप स्वयं दस्तावेज़ को समझने में असमर्थ हैं, तो इसे httpd.conf में जोड़ने का प्रयास करें:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^dev\.example\.com$ [NC]        
RewriteRule ^(.*)$ http://example.com:8080$1 [R=301]    

और यदि यह एक स्पष्ट उदाहरण नहीं है, तो यहां एक है एक mod_rewrite शुरुआती गाइड से लिंक करें भी।


3
2017-10-28 00:59



यह सही नहीं है। mod_rewrite केवल अंतिम उपाय के रूप में उपयोग किया जाना चाहिए, जब कुछ भी नहीं करेगा। दिए गए रीडायरेक्ट और प्रॉक्सी समाधान इस (और लगभग किसी अन्य कल्पनीय) मामले में कहीं बेहतर हैं। - adaptr
@adaptr यह एक रीडायरेक्ट करता है, मैं यह देखने में असफल रहा कि अन्य रीडायरेक्ट्स में से कोई भी "बहुत बेहतर" है। और यह सुझाव देते हुए कि वह प्रॉक्सी स्थापित करता है जब उसे स्पष्ट रूप से अपाचे / सुरक्षा / प्रदर्शन / आदि की दृढ़ समझ नहीं है, क्या वह गंभीर है? - Chris S
मैं साझा होस्टिंग पर हूँ। पुनर्लेख एकमात्र विकल्प है। मैं एक .htaccess फ़ाइल बना सकता हूं, लेकिन प्रॉक्सी या वर्चुअल होस्ट नहीं। - abalter


टर्मिनल पर निम्न पंक्ति चलाएं (अपना डोमेन और उप डोमेन नाम सही ढंग से निर्दिष्ट करें)

sudo nano /etc/apache2/sites-available/subdomain.example.com.conf 

निम्नलिखित कोड पेस्ट करें और अपनी आवश्यकता के रूप में बदलें

<VirtualHost *:80>
        ServerAdmin admin@example.com
        ServerName subdomain.example.com
        ServerAlias subdomain.example.com
        ProxyRequests Off

        #ProxyPass / http://localhost:8080/
        <Location />
                ProxyPreserveHost On
                ProxyPass http://example.com:8080/
                ProxyPassReverse http://example.com:8080/
        </Location>
     # Uncomment the line below if your site uses SSL.
     #SSLProxyEngine On
</VirtualHost>

टर्मिनल पर निम्न पंक्तियां चलाएं (अपना डोमेन और उप डोमेन नाम सही ढंग से निर्दिष्ट करें)

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2ensite subdomain.example.com.conf
sudo service apache2 restart

2
2018-01-18 09:29



क्या इस और स्वीकृत उत्तर के बीच कोई आवश्यक अंतर है? - kasperd
ज्यादातर लोग जोड़ना भूल जाते हैं sudo a2enmod proxy_http इसलिए उन्हें ठीक से चलने पर कठिनाइयों का सामना करना पड़ता है। इसके अलावा मैं अधिक संगत होने में मदद के लिए अनुक्रम में शुरू होने से पूर्ण प्रक्रिया देने की कोशिश करता हूं। आपके प्रश्न के लिए धन्यवाद। - M.A.K. Ripon
"ProxyRequests Off" का उल्लेख करने के कारण +1 - Sebastian
यह सिर्फ मेरे लिए काम नहीं करता है। 'sudo a2enmod subdomain.domain.com.conf' कहता है "त्रुटि: मॉड्यूल x.y.z मौजूद नहीं है!" क्या इसे 'डिफ़ॉल्ट' कॉन्फ़िगरेशन में उल्लेख किया जाना चाहिए? - Dirk Schumacher
सबडोमेन पंजीकृत करने में सुधार sudo a2ensite sub.yourdomain.com - Ali Azhar