2012-01-13 23 views
8

Czy ktoś pękł, jak uzyskać HTTPS działający na dev_appserver.py? Potrzebuję go do testowania aplikacji na Facebooku. Przeszukałem dokumentację i nic nie wskazuje na to, żeby to zrobić (trzymanie "bezpiecznej" w app.yaml nie robi nic lokalnie).GAE dev_appserver.py przez HTTPS

Wydawało mi się, że może istnieć sposób na jej podanie, ale czy ktoś ma jakiekolwiek doświadczenie w tym zakresie?

Odpowiedz

6

Serwer dev_appserver nie obsługuje HTTPS. Jedynym praktycznym sposobem, aby to zrobić, jest skonfigurowanie odwrotnego proxy przed aplikacją - na przykład za pomocą nginx lub Apache - i przeniesienie ruchu SSL do swojej aplikacji.

+0

A jak to zrobiłeś? –

+2

@AhmedNuaman To byłoby inne pytanie - i jedno dla serverfault.com, a nie Stack Overflow. –

1

Wiem, że to późno, w przypadku gdy ktokolwiek inny znajdzie to pytanie:

ngrok jest cichy łatwy w konfiguracji dla zwyczaju odwrócić HTTPS proxy ..

Jedynym minusem jest to, że mój wniosek webapp2 wciąż wierzy, że jest obsługiwany przez HTTP, więc używanie redirect() nie działa dobrze, ponieważ rozwiązuje względne adresy URL do bezwzględnych adresów URL za pomocą request.url.

Moja obejście było nadpisać RequestHandler.redirect następująco:

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) 

Potrzebowałem klasę BaseRequestHandler anyways do realizacji innych funkcji użytkowych.

0

kładę to w moim appache httpd.conf do pełnomocnika połączenia:

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

Teraz zamiar https://localhost/myproject/ w przeglądarce zadziałało.

Uwaga: Protokół SSL musi być włączony na serwerze Apache. Na moim komputerze z OS X odkomentowałem linię Include /private/etc/apache2/extra/httpd-ssl.conf w pliku /etc/apache2/httpd.conf i uruchomiłem sudo apachectl restart

Powiązane problemy