Apache ProxyPassRewrite http://test.example.com से प्राप्त प्रतिक्रिया निकायों को फिर से नहीं लिखती है , केवल हेडर (जैसे 404 पृष्ठ और इस तरह पुनर्निर्देशित)।
कई विकल्प:
एक ) पूर्ण के बजाय रिश्तेदार पथ का उपयोग करने के लिए आंतरिक एप्लिकेशन को फिर से लिखना। के ../css/style.css
बजाय यानी/css/style.css
दो ) आंतरिक ऐप /folder
को test.example.com की जड़ के बजाय एक ही उपनिर्देशिका में फिर से लोड करें।
तीन ) एक और दो अक्सर होने की संभावना नहीं होती है ... यदि आप भाग्यशाली हैं कि आंतरिक ऐप केवल दो या तीन उपनिर्देशिकाओं का उपयोग करता है और जो आपके मुख्य साइट पर अप्रयुक्त हैं , तो बस ProxyPass लाइनों का एक गुच्छा लिखें:
# Expose Internal App to the internet.
ProxyPass /externalpath/ http://test.example.com/
ProxyPassReverse /externalpath/ http://test.example.com/
# Internal app uses a bunch of absolute paths.
ProxyPass /css/ http://test.example.com/css/
ProxyPassReverse /css/ http://test.example.com/css/
ProxyPass /icons/ http://test.example.com/icons/
ProxyPassReverse /icons/ http://test.example.com/icons/
चार ) आंतरिक ऐप के लिए एक अलग उपडोमेन बनाएं और बस प्रॉक्सी को सब कुछ उल्टा कर दें:
<VirtualHost *:80>
ServerName app.example.com/
# Expose Internal App to the internet.
ProxyPass / http://test.internal.example.com/
ProxyPassReverse / http://test.internal.example.com/
</VirtualHost>
पांच ) कभी-कभी डेवलपर्स पूरी तरह से अव्यवस्थित होते हैं और उनके आवेदन न केवल निरपेक्ष URL उत्पन्न करते हैं, बल्कि उनके URL में होस्टनाम भाग भी शामिल करते हैं और परिणामी HTML कोड इस तरह दिखता है <img src=http://test.example.com/icons/logo.png>
:।
ए ) आप एक विभाजन क्षितिज डीएनएस और परिदृश्य के कॉम्बो समाधान का उपयोग कर सकते हैं। आंतरिक और बाहरी दोनों उपयोगकर्ता test.example.com का उपयोग करते हैं, लेकिन आपका आंतरिक DNS सीधे test.example.com के सर्वर के आईपी पते पर इंगित करता है। बाहरी उपयोगकर्ताओं के लिए test.example.com का सार्वजनिक रिकॉर्ड आपके सार्वजनिक वेबसर्वर www.example.com के आईपी-पते की ओर इशारा करता है और आप तब समाधान 4 का उपयोग कर सकते हैं।
बी ) आप वास्तव में अपाचे प्राप्त कर सकते हैं न केवल test.example.com को प्रॉक्सी अनुरोध, बल्कि आपके उपयोगकर्ताओं को प्रेषित होने से पहले प्रतिक्रिया निकाय को भी फिर से लिखना होगा। (आम तौर पर एक प्रॉक्सी केवल HTTP हेडर / प्रतिक्रियाओं को फिर से लिखता है)। Apache 2.2 में mod_substitute। मैंने परीक्षण नहीं किया है अगर यह mod_proxy के साथ अच्छी तरह से ढेर हो जाता है, लेकिन शायद निम्नलिखित काम करता है:
<Location /folder/>
ProxyPass http://test.example.com/
ProxyPassReverse http://test.example.com/
AddOutputFilterByType SUBSTITUTE text/html
Substitute "s|test.example.com/|www.example.com/folder/|i"
</Location>