Changeset - 1cbb52eac89b
[Not reviewed]
default
0 1 0
drewp@bigasterisk.com - 8 months ago 2024-05-13 02:32:50
drewp@bigasterisk.com
nginx log what server/path you proxy to
1 file changed with 5 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/light9/homepage/write_config.py
Show inline comments
 
@@ -13,68 +13,70 @@ from pathlib import Path
 
from urllib.parse import urlparse
 

	
 
from light9 import showconfig
 
from light9.namespaces import L9
 
from light9.run_local import log
 

	
 

	
 
def main():
 
    [outPath] = sys.argv[1:]
 

	
 
    log.info(f'writing nginx config to {outPath}')
 
    graph = showconfig.getGraph()
 
    netHome = graph.value(showconfig.showUri(), L9['networking'])
 
    webServer = graph.value(netHome, L9['webServer'])
 
    if not webServer:
 
        raise ValueError('no %r :webServer' % netHome)
 
    proj_root = Path(__file__).parent.parent.parent.parent
 
    mime_types = proj_root / 'web/mime.types'
 
    nginx_port = urlparse(str(webServer)).port
 
    with open(outPath, 'wt') as out:
 
        print(f'''
 
worker_processes 1;
 

	
 
daemon off;
 
error_log /tmp/light9_homepage.err;
 
error_log /dev/stderr;
 
pid /dev/null;
 

	
 
events {{
 
  worker_connections 1024;
 
}}
 

	
 
http {{
 
 include {mime_types};
 
  include {mime_types};
 

	
 
  proxy_buffering off;
 
  proxy_http_version 1.1;
 

	
 
  # for websocket
 
  proxy_set_header Upgrade $http_upgrade;
 
  proxy_set_header Connection "upgrade";
 

	
 
  log_format proxies_format '$request -> $proxy_host$uri    st=$status sent=$body_bytes_sent';
 
  
 
 server {{
 
  listen {nginx_port};
 
  access_log off;
 
  access_log /dev/stderr proxies_format;
 
  autoindex on;''',
 
              file=out)
 

	
 
        for role, server in sorted(graph.predicate_objects(netHome)):
 
            if not str(server).startswith('http') or role == L9['webServer']:
 
                continue
 
            path = graph.value(role, L9['urlPath'])
 
            if not path:
 
                continue
 
            server = str(server).rstrip('/')
 
            print(f'''
 
  location = /{path} {{ rewrite (.*) $1/ permanent; }}
 
  location /service/{path}/ {{
 
    rewrite ^/service/{path}(/.*) $1 break;
 
    proxy_pass {server};
 
  }}''',
 
                  file=out)
 

	
 
        showPath = showconfig.showUri().split('/', 3)[-1]
 
        root = showconfig.root()[:-len(showPath)].decode('ascii')
 
        print(f'''
 
  location /show/ {{
 
    root {root};
 
  }}
0 comments (0 inline, 0 general)