2012-01-13 9 views
8

क्या किसी ने भी dev_appserver.py पर काम कर रहे HTTPS को कैसे प्राप्त किया है? मुझे फेसबुक कैनवास ऐप परीक्षण के लिए इसकी ज़रूरत है। मेरे पास दस्तावेज़ों की खोज है और कुछ भी सुझाव नहीं देता है कि ऐसा करने का एक तरीका है (ऐप में 'सुरक्षित' चिपकाएं। Yaml स्थानीय रूप से कुछ भी नहीं है)।GAE dev_appserver.py HTTPS

मुझे लगता है कि इसे प्रॉक्सी करने का कोई तरीका हो सकता है, लेकिन क्या किसी को इसका कोई अनुभव मिला है?

उत्तर

6

dev_appserver HTTPS का समर्थन नहीं करता है। ऐसा करने का एकमात्र व्यावहारिक तरीका है अपने ऐप के सामने एक रिवर्स प्रॉक्सी सेट करना - जैसे nginx या Apache - और यह आपके ऐप पर प्रॉक्सी एसएसएल यातायात है।

+0

और आपने यह कैसे किया? –

+2

@ अहमद नुमान यह एक अलग सवाल होगा - और serverfault.com के लिए एक, स्टैक ओवरफ़्लो नहीं। –

1

मैं जानता हूँ कि यह देर से है, बाकी मामले किसी में यह सवाल पाता है:

ngrok एक कस्टम के लिए सेटअप करने के लिए शांत आसान है रिवर्स HTTPS प्रॉक्सी ..

केवल नकारात्मक पक्ष यह है कि मेरे webapp2 आवेदन अभी भी मानते हैं कि यह HTTP पर परोसा जा रहा है, इसलिए redirect() का उपयोग अच्छी तरह से काम नहीं करता है क्योंकि यह request.url का उपयोग कर संबंधित यूआरएल के सापेक्ष यूआरएल को हल करता है।

class BaseRequestHandler(RequestHandler): 
    def redirect(self, uri, permanent = False, abort = False, code = None, body = None): 
    if uri.startswith(('.', '/')): 
     base_url = self.request.url 
     if base_url.startswith('http://'): 
     base_url = 'https://' + base_url[7:] 
     uri = str(urlparse.urljoin(base_url, uri)) 
    super(RequestHandler, self).redirect(uri, permanent, abort, code, body) 

मैं अन्य उपयोगिता कार्यों को लागू करने के लिए वैसे भी एक BaseRequestHandler वर्ग की जरूरत:

मेरे वैकल्पिक हल RequestHandler.redirect अधिलेखित करने के लिए इस प्रकार थी।

<Location /myproject/> 
    ProxyPass http://localhost:8080/ 
</Location> 

अब https://localhost/myproject/ के लिए जा रहा में अपने ब्राउज़र काम किया:

0

मैं कनेक्शन प्रॉक्सी के लिए मेरे Appache httpd.conf में इस डाल दिया।

नोट: एसएसएल को आपके अपाचे सर्वर पर सक्षम होना आवश्यक है। मेरी ओएस एक्स मशीन पर मैंने Include /private/etc/apache2/extra/httpd-ssl.conf को /etc/apache2/httpd.conf में लाइन से बाहर कर दिया और sudo apachectl को पुनरारंभ किया