From 4578aa44fce996faf4711eb6e5fad25cdc86374c Mon Sep 17 00:00:00 2001 From: Yves Fischer Date: Sat, 2 Jan 2016 00:51:25 +0100 Subject: support reverse proxy --- mediabrowser/wsgi.py | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) (limited to 'mediabrowser/wsgi.py') diff --git a/mediabrowser/wsgi.py b/mediabrowser/wsgi.py index 7d80852..038ca5b 100644 --- a/mediabrowser/wsgi.py +++ b/mediabrowser/wsgi.py @@ -1,15 +1,36 @@ +import mediabrowser + from flask import Flask from werkzeug.contrib.cache import SimpleCache -import mediabrowser - import os +import logging - -"""Run via WSGI""" +logging.basicConfig(level=logging.INFO) root = os.getenv("MEDIABROWSER_ROOT") if not root: raise Exception('Must set MEDIABROWSER_ROOT variable') cache = SimpleCache() application = Flask("mediabrowser-demo") application.register_blueprint(mediabrowser.build(root, cache)) + +def reverse_proxified(app): + """ + Configure apache as: + RequestHeader set X-Script-Name /videos + """ + def wsgi_call(environ, start_response): + script_name = environ.get('HTTP_X_SCRIPT_NAME', '') + if script_name: + environ['SCRIPT_NAME'] = script_name + path_info = environ['PATH_INFO'] + if path_info.startswith(script_name): + environ['PATH_INFO'] = path_info[len(script_name):] + + scheme = environ.get('HTTP_X_SCHEME', '') + if scheme: + environ['wsgi.url_scheme'] = scheme + return app(environ, start_response) + return wsgi_call + +application = reverse_proxified(application.wsgi_app) -- cgit v1.2.1