Apachexy_http IP पर पुनर्निर्देशित करें और होस्टनाम सेट करें


16

उम्मीद है कि आप लोग मुझे एक प्रॉक्सी समस्या के साथ मेरी मदद कर सकते हैं।

मेरे पास पहले से क्या है

मैंने * .proxy.domain से * .intern.domain से प्रॉक्सी अनुरोधों के लिए अपाचे http रिवर्स प्रॉक्सी की स्थापना की है। अपाचे बाहरी नेटवर्क से मेरे आंतरिक वेबपृष्ठों तक पहुंचने का एकमात्र तरीका है।

उदाहरण:

app.proxy.domain -> app.intern.domain
mail.proxy.domain -> mail.intern.domain

यह सब बहुत अच्छा काम कर रहा है, लेकिन मुझे निम्नलिखित समस्या है।

समस्या
मैं निम्नलिखित अनुरोधों को प्रॉक्सी करना चाहता हूं:

app.proxy.domain -> app.internal.domain
app-dev.proxy.domain -> app-dev.internal.domain

यह कोई समस्या नहीं है, लेकिन दुर्भाग्य से ऐप-देव सर्वर ऐप सर्वर वेबप्लिकेशन की एक सटीक प्रतिलिपि चलाता है, और यह वेबएपिसिएशन केवल होस्टनाम के प्रति प्रतिक्रिया करता है (app.intern.domain)

तो मुझे जो करने की आवश्यकता है वह निम्नलिखित है

app.proxy.domain -> app.internal.domain (10.0.1.1)
app-dev.proxy.domain -> app.internal.domain (10.0.1.2)

मैं दूसरी चीज़ कर सकता हूँ, "10.0.1.2 app.internal.domain" को / etc / मेजबानों में जोड़कर, लेकिन इसका मतलब यह भी है कि app.proxy.domain देव-सर्वर पर उतर जाएगा।

मैं ऐप-dev.proxy.domain के लिए केवल vhost कॉन्फ़िगरेशन फ़ाइल के अंदर / etc / मेजबान प्रविष्टि सेट करने के लिए एक विकल्प की खोज कर रहा हूं, ताकि हर दूसरे vhost कॉन्फ़िगरेशन में app.intern.domain के लिए DNS का उपयोग किया जाए।

विचार ...

क्या अपाचे कॉन्फिग, टू को बताने का कोई तरीका है

ProxyPass / http://10.0.1.2/

लेकिन hostname के रूप में app.intern.domain भेजें?

ऐप-देव को सुनने के लिए देव-सर्वर वेबप्लीकेशन का संपादन करना कोई विकल्प नहीं है, क्योंकि यह एक सटीक प्रतिलिपि माना जाता है (मेरे निर्णय नहीं ...)

धन्यवाद!

जवाबों:


34

संभवतः आप mod_proxy को mod_proxy के साथ संयोजन में उपयोग कर सकते हैं। मैंने हालांकि इसका परीक्षण नहीं किया है।

तो आपके app- देव vhost के लिए आप हो सकते हैं:

RequestHeader set Host "app.internal.domain"

और फिर आप जोड़ देंगे:

ProxyPreserveHost On

2
ProxypreserveHost सेटिंग ने पूरी तरह से चाल चली। धन्यवाद!
कुछ लिनक्स नर्ड

3

बदसूरत काम-आस-पास का उपयोग करना है (बल्कि: दुर्व्यवहार) / etc / मेजबान को इंगित करने के लिए app.internal.domain को स्थानीयहोस्ट करें और फिर अपाचे को दो अतिरिक्त बंदरगाहों, प्रत्येक आपके ऐप और ऐप-देव के लिए सुनने के लिए कॉन्फ़िगर करें। तो दो बार प्रॉक्सी को उल्टा करें:

Listen 80
Listen 127.0.0.1:8001
Listen 127.0.0.1:8001

<VirtualHost *:80>
   ServerName app.proxy.domain
   ProxyPass / http://app.internal.domain:8001
</VirtualHost>
<VirtualHost *:80>
   ServerName app-dev.proxy.domain
   ProxyPass / http://app.internal.domain:8002
</VirtualHost>
<VirtualHost 127.0.0.1:8001>
   ServerName app.internal.domain
   ProxyPreserveHost On
   ProxyPass / http://10.0.1.1/
</VirtualHost>
<VirtualHost 127.0.0.1:8002>
   ServerName app.internal.domain
   ProxyPreserveHost On
   ProxyPass / http://10.0.1.2/
</VirtualHost>

2

प्रॉक्सी के कॉन्‍फ़िगर को जोड़ें (foe app-dev.proxy ..):

RequestHeader edit Host ^app-dev.proxy.domain app.proxy.domain

आपको पहले से mod_headers सक्षम करना होगा:

a2enmod headers

आंतरिक सर्वर 10.0.1.2 होना चाहिए

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