I know this is late, in case anybody else finds this question:
ngrok is quiet easy to setup for a custom reverse HTTPS proxy..
The only downside is that my webapp2 application still believes it's being served over HTTP, so using redirect() doesn't work well because it resolves relative URLs to absolute URLs using request.url.
My workaround was to overwrite RequestHandler.redirect as follows:
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)
I needed a BaseRequestHandler class anyways for implementing other utility functions.