diff --git a/d1/blank-app-nginx.conf b/d1/blank-app-nginx.conf deleted file mode 100644 index c7a921a..0000000 --- a/d1/blank-app-nginx.conf +++ /dev/null @@ -1,11 +0,0 @@ -events { - multi_accept on; - worker_connections 1024; -} - -http { - server { - listen 80; - return 302 https://product-development-service.blogspot.com; - } -} diff --git a/d1/forward.py b/d1/forward.py index 0284e1b..41b71fb 100644 --- a/d1/forward.py +++ b/d1/forward.py @@ -22,10 +22,10 @@ def forward(config_dir, config): ) ssh_command = [ 'ssh', - '-o', - 'ExitOnForwardFailure yes', - '-o', - 'StrictHostKeyChecking no' + '-o', 'ExitOnForwardFailure yes', + '-o', 'StrictHostKeyChecking no', + '-o', 'ServerAliveInterval 1', + '-o', 'ConnectTimeout 1', ] ports = dict( diff --git a/d1/nginx_config.py b/d1/nginx_config.py new file mode 100644 index 0000000..12a9f61 --- /dev/null +++ b/d1/nginx_config.py @@ -0,0 +1,59 @@ +import json +import io +import sys + + +with io.open( + sys.argv[1], + 'r' +) as f: + forward_nginx = json.load(f) + +with io.open( + sys.argv[2], + 'w' +) as f: + sections = [] + for entry in forward_nginx: + sections.append(r''' + location ^~ /{app_name}/ { + proxy_set_header Host $http_host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + proxy_redirect off; + proxy_buffering off; + proxy_pass {target_endpoint}; + } + '''.replace( + '{app_name}', entry['app_name'], + ).replace( + '{target_endpoint}', entry['target_endpoint'], + )) + f.write(r''' +events { + multi_accept on; + worker_connections 8; +} + +http { + server { + listen 80; + client_max_body_size 200M; + + {sections_config} + + location / { + return 302 https://product-development-service.blogspot.com; + } + } + + map $http_upgrade $connection_upgrade { + default upgrade; + '' close; + } +} + '''.replace( + '{sections_config}', '\n'.join(sections) + )) diff --git a/docker-compose.yml b/docker-compose.yml index d4d2865..485a455 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,17 +1,20 @@ version: '3.7' services: - blank-app: + app: build: context: . - dockerfile: ./docker/blank-app/Dockerfile + dockerfile: ./docker/app/Dockerfile volumes: - - .:/app:rw - restart: always - forward: - build: - context: . - dockerfile: ./docker/forward/Dockerfile - volumes: - - ./d1/forward.py:/app/d1/forward.py:ro - - ./tmp/cache/forward_data:/app/tmp/cache/forward_data:ro + - ./d1/nginx_config.py:/app/d1/nginx_config.py:ro + - ./tmp/cache/forward.nginx.json:/app/tmp/cache/forward.nginx.json:ro restart: always + ports: + - 80:80 + #forward: + # build: + # context: . + # dockerfile: ./docker/forward/Dockerfile + # volumes: + # - ./d1/forward.py:/app/d1/forward.py:ro + # - ./tmp/cache/forward_data:/app/tmp/cache/forward_data:ro + # restart: always diff --git a/docker/app/Dockerfile b/docker/app/Dockerfile new file mode 100644 index 0000000..a0772c9 --- /dev/null +++ b/docker/app/Dockerfile @@ -0,0 +1,9 @@ +FROM nginx:latest +ENV DEBIAN_FRONTEND=noninteractive +RUN apt-get update && apt-get install -y python3 +WORKDIR /app + +ENTRYPOINT /bin/sh -c "\ + python3 d1/nginx_config.py tmp/cache/forward.nginx.json /etc/nginx/nginx.conf && \ + /docker-entrypoint.sh nginx -g 'daemon off;' \ +" diff --git a/docker/blank-app/Dockerfile b/docker/blank-app/Dockerfile deleted file mode 100644 index f195630..0000000 --- a/docker/blank-app/Dockerfile +++ /dev/null @@ -1,3 +0,0 @@ -FROM nginx:latest - -COPY d1/blank-app-nginx.conf /etc/nginx/nginx.conf