[~] Refactor
This commit is contained in:
parent
79623db497
commit
da47adc859
@ -3,16 +3,20 @@ import io
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
||||||
with io.open(
|
def forward(
|
||||||
sys.argv[1],
|
input_json,
|
||||||
|
output_conf,
|
||||||
|
):
|
||||||
|
with io.open(
|
||||||
|
input_json,
|
||||||
'r'
|
'r'
|
||||||
) as f:
|
) as f:
|
||||||
forward_nginx = json.load(f)
|
forward_nginx = json.load(f)
|
||||||
|
|
||||||
with io.open(
|
with io.open(
|
||||||
sys.argv[2],
|
output_conf,
|
||||||
'w'
|
'w'
|
||||||
) as f:
|
) as f:
|
||||||
names = [o['app_name'] for o in forward_nginx]
|
names = [o['app_name'] for o in forward_nginx]
|
||||||
|
|
||||||
if not '' in names:
|
if not '' in names:
|
||||||
@ -64,12 +68,12 @@ with io.open(
|
|||||||
'{location}', location,
|
'{location}', location,
|
||||||
))
|
))
|
||||||
f.write(r'''
|
f.write(r'''
|
||||||
events {
|
events {
|
||||||
multi_accept on;
|
multi_accept on;
|
||||||
worker_connections 64;
|
worker_connections 64;
|
||||||
}
|
}
|
||||||
|
|
||||||
http {
|
http {
|
||||||
log_format main
|
log_format main
|
||||||
'[$time_local][$remote_addr, $http_x_forwarded_for, $t1, $http_host]'
|
'[$time_local][$remote_addr, $http_x_forwarded_for, $t1, $http_host]'
|
||||||
'[$request_length,$bytes_sent,$request_time]'
|
'[$request_length,$bytes_sent,$request_time]'
|
||||||
@ -97,7 +101,91 @@ http {
|
|||||||
default upgrade;
|
default upgrade;
|
||||||
'' close;
|
'' close;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
'''.replace(
|
'''.replace(
|
||||||
'{sections_config}', '\n'.join(sections)
|
'{sections_config}', '\n'.join(sections)
|
||||||
))
|
))
|
||||||
|
|
||||||
|
def ssl(input_json, output_conf):
|
||||||
|
with io.open(
|
||||||
|
input_json,
|
||||||
|
'r'
|
||||||
|
) as f:
|
||||||
|
ssl_nginx = json.load(f)
|
||||||
|
|
||||||
|
servers = []
|
||||||
|
|
||||||
|
for server in ssl_nginx['servers']:
|
||||||
|
servers.append(
|
||||||
|
r'''
|
||||||
|
server {
|
||||||
|
set $t1 $remote_addr;
|
||||||
|
if ($http_x_forwarded_for)
|
||||||
|
{
|
||||||
|
set $t1 $http_x_forwarded_for;
|
||||||
|
}
|
||||||
|
|
||||||
|
listen 443 ssl;
|
||||||
|
server_name {server_names};
|
||||||
|
|
||||||
|
ssl_certificate {signed_chain_cert};
|
||||||
|
ssl_certificate_key {domain_key};
|
||||||
|
|
||||||
|
location ^~ / {
|
||||||
|
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 http://app:80;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'''.replace(
|
||||||
|
'{server_names}', ' '.join(server['server_names'])
|
||||||
|
).replace(
|
||||||
|
'{signed_chain_cert}', server['signed_chain_cert'],
|
||||||
|
).replace(
|
||||||
|
'{domain_key}', server['domain_key'],
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
with io.open(
|
||||||
|
output_conf,
|
||||||
|
'w'
|
||||||
|
) as f:
|
||||||
|
f.write(
|
||||||
|
r'''
|
||||||
|
events {
|
||||||
|
multi_accept on;
|
||||||
|
worker_connections 64;
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
log_format main
|
||||||
|
'[$time_local][$remote_addr, $http_x_forwarded_for, $t1, $http_host]'
|
||||||
|
'[$request_length,$bytes_sent,$request_time]'
|
||||||
|
'[$status][$request]'
|
||||||
|
'[$http_user_agent][$http_referer]';
|
||||||
|
|
||||||
|
access_log /dev/null combined;
|
||||||
|
access_log /dev/stderr main;
|
||||||
|
|
||||||
|
{servers}
|
||||||
|
|
||||||
|
|
||||||
|
map $http_upgrade $connection_upgrade {
|
||||||
|
default upgrade;
|
||||||
|
'' close;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'''.replace('{servers}', '\n'.join(servers))
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
if len(sys.argv) >= 2 and sys.argv[1] == 'ssl':
|
||||||
|
ssl(*sys.argv[2:])
|
||||||
|
else:
|
||||||
|
forward(sys.argv[1:])
|
||||||
|
@ -11,10 +11,11 @@ services:
|
|||||||
ssl-app:
|
ssl-app:
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: ./docker/app/Dockerfile
|
dockerfile: ./docker/ssl-app/Dockerfile
|
||||||
volumes:
|
volumes:
|
||||||
- ./d1/nginx_config.py:/app/d1/nginx_config.py:ro
|
- ./d1/:/app/d1/:ro
|
||||||
- ./tmp/cache/forward.nginx.json:/app/tmp/cache/forward.nginx.json:ro
|
- ./tmp/d1/:/app/tmp/d1/:ro
|
||||||
|
- ./tmp/d1/letsencrypt:/etc/letsencrypt:rw
|
||||||
restart: always
|
restart: always
|
||||||
cpanel:
|
cpanel:
|
||||||
build:
|
build:
|
||||||
|
16
docker/ssl-app/Dockerfile
Normal file
16
docker/ssl-app/Dockerfile
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
FROM alpine:latest
|
||||||
|
RUN apk add openssh
|
||||||
|
RUN apk add python3
|
||||||
|
RUN apk add bash curl
|
||||||
|
RUN apk add py3-pip
|
||||||
|
RUN apk add nginx
|
||||||
|
RUN apk add tini
|
||||||
|
#RUN pip3 install requests certbot
|
||||||
|
RUN apk add certbot
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
ENTRYPOINT /bin/sh -c "\
|
||||||
|
python3 d1/nginx_config.py ssl tmp/d1/ssl.nginx.json /etc/nginx/nginx.conf && \
|
||||||
|
tini -- nginx -g 'daemon off;' \
|
||||||
|
"
|
Loading…
Reference in New Issue
Block a user