blob: bd862036149437cb5f8587aea4d3032bd8aa6940 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
from werkzeug.contrib.fixers import ProxyFix
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
"""
'ProxyFix' applied for reading X-Forwarded-Proto, X-Forwarded-For, X-Forwarded-Host
'_reverse_proxified' applied for 'X-Script-Name'.
That's required when external request path is different from application server path.
"""
def fix(app):
return _reverse_proxified(ProxyFix(app))
|