We have an application which supports both HTTP and HTTPS. If the user
visits the site via https:// he should stay on that protocol and as
such all links should be generated accordingly.
We do the SSL handling in Nginx in front of the bfg application. So
the application always gets a request.application_url with a http://
link. We have an additional header "'HTTP_X_FORWARDED_PROTO" which
gets sets to 'https'.
In order to support this, we use our own route_url function that looks
from repoze.bfg.url import route_url as bfg_route_url
def route_url(route_name, request, *elements, **kw):
https = request.environ.get('HTTP_X_FORWARDED_PROTO') == 'https'
value = bfg_route_url(route_name, request, *elements, **kw)
return value.replace('http://', 'https://')
Does this sound like a reasonable approach, or is there a better
alternative? Having to use a different implementation of a core API
Repoze-dev mailing list