2012-06-12 26 views
5

क्या पोर्ट 9 0 9 0 पर श्रोता स्थापित करना संभव है और 9 0 9 0 पर आने वाले प्रत्येक अनुरोध के लिए मेजबान: test.host जैसे हेडर जोड़ें और इसे 8080 कहने के लिए भेजें?werkzeug या अन्य पायथन अनुरोध ढांचे का उपयोग करके बहुत सरल http प्रॉक्सी कैसे बनाएं?

धन्यवाद

संपादित करें: मैं अब के लिए एक रिवर्स-प्रॉक्सी के साथ चला गया, होस्टनाम आवेदन:। किसी भी अनुरोध है कि में आता है को बंदरगाह

+0

क्या आपको अपाचे के mod_proxy जैसे मौजूदा प्रॉक्सी का उपयोग करने से रोकता है? क्या आपके वेब सर्वर में ऐसी सुविधाएं उपलब्ध नहीं हैं जिन्हें आपको कार्यान्वित करने की आवश्यकता है? –

+0

@jd मैं mod_proxy को विभिन्न बंदरगाहों को कैसे सुन सकता हूं, केवल डिफ़ॉल्ट अपाचे पोर्ट नहीं? मैंने पढ़ा है कि अपाचे कई वैसे भी सुनना पसंद नहीं करता है। – rapadura

उत्तर

4

मुड़ एक रिवर्स प्रॉक्सी के एक कार्यान्वयन है कि आप कर सकते थे अपनी जरूरतों के अनुसार संशोधित करें। आप उदाहरण here देख सकते हैं। यदि आप twisted.web.proxy के स्रोत कोड को देखते हैं, तो आप देख सकते हैं कि 'होस्ट:' हेडर ReverseProxyRequest.process में सेट है, इसलिए आप इसे उपclass कर सकते हैं और अपना हेडर सेट कर सकते हैं।

1

जब तक आपको केवल अपने वेब एप्लिकेशन को पता नहीं हो सकता है (उदाहरण के लिए, आपको अपने वेबपैड की कस्टम प्रमाणीकरण प्रणाली के साथ प्रॉक्सी किए गए अनुरोध को प्रमाणित करने की आवश्यकता है) पर आधारित प्रॉक्सी अनुरोध को तैयार करने की आवश्यकता है, तो आपको अपने वेब सर्वर की प्रॉक्सी क्षमताओं का उपयोग करना चाहिए। अपाचे के साथ

उदाहरण:

Listen 0.0.0.0:9090 
ProxyRequests off 
<VirtualHost myhost:9090> 
    ProxyPass/http://localhost:8080/ 
    ProxyPassReverse/http://localhost:8080/ 
    ProxyPassReverseCookieDomain localhost myhost 
</VirtualHost> 

आप एक बोतल या WERKZEUG आवेदन में प्रॉक्सी बातें करने के लिए है, तो आप, httplib का उपयोग कर सकते भेजे अनुरोध डेटा के आधार पर अनुरोध बनाने और प्रतिक्रिया लौटाएँ, कच्चा या संशोधित (उदाहरण के लिए लिंक पुनर्लेखन के लिए)। यह करने योग्य है, मेरे पास ऐसी एक प्रॉक्सी है जिसका उपयोग कोई अच्छा विकल्प नहीं था। यदि आप ऐसा करते हैं तो मैं HTML लिंक को फिर से लिखने के लिए नियमित अभिव्यक्तियों का उपयोग करने की सलाह देता हूं। मैंने इसके बजाय PyQuery का उपयोग किया, इसे सही करने के लिए यह बहुत आसान है।

+0

मुझे एक विशिष्ट मूल्य पर हेडर होस्ट जोड़ने या सेट करने की आवश्यकता है, वास्तव में एक खराब विरासत अनुप्रयोग के लिए जिसमें मेजबाननाम के आसपास व्यवसाय तर्क का समूह है। लेकिन, यह जांचने के लिए कि मोबाइल डिवाइस पर एप्लिकेशन कैसा दिखता है, और विकास/परीक्षण को आसान बनाने के लिए (विभिन्न बंदरगाहों पर कई उदाहरण चलाते हैं), मैं इससे पहले इस प्रॉक्सी-एंड-एड-हेडर को सेट करना चाहता हूं। – rapadura

+0

अभी मेरे पास वर्चुअल होस्ट सेटअप है और फिर मुझे/etc/hosts के साथ मिलना होगा, यह सिर्फ बदसूरत है। एक छोटी पायथन लिपि बनाना जो मैं बता सकता हूं, हे 90 9 0 एड होस्ट पर सुनें: किसी भी अनुरोध के लिए हेडर ब्लाह और उन्हें स्थानीयहोस्ट पर अग्रेषित करें: 7777 अच्छा होगा, फिर मैं निजी पर जा सकता हूं: फोन और एप्लिकेशन से 9 0 9 0 अभी भी इसके बारे में सोचेंगे ब्लाह से परोसा जा रहा है। – rapadura

+1

मैं देखता हूं। फिर छोटे वेब ऐप शायद जाने का रास्ता है। मुझे लगता है कि @ मेन्सी का जवाब सबसे अच्छा है लेकिन आप ट्विस्टेड पर वर्कज़ुग पसंद करते हैं, यह बहुत कठिन नहीं होना चाहिए। –