[~] Refactor

This commit is contained in:
Siarhei Siniak 2023-09-23 12:16:30 +03:00
parent ede4cc6edf
commit 9f44796795
2 changed files with 76 additions and 18 deletions

@ -27,7 +27,8 @@ def forward(
) )
) )
sections = [] sections = dict()
for entry in forward_nginx: for entry in forward_nginx:
location = None location = None
@ -36,6 +37,14 @@ def forward(
else: else:
location = '/' location = '/'
if 'server_name' in entry:
server_name = entry['server_name']
else:
server_name = 'default_server'
if not server_name in sections:
sections[server_name] = []
if 'target_endpoint' in entry: if 'target_endpoint' in entry:
section_body = r''' section_body = r'''
proxy_set_header Host $http_host; proxy_set_header Host $http_host;
@ -58,7 +67,7 @@ def forward(
else: else:
raise NotImplementedError raise NotImplementedError
sections.append(r''' sections[server_name].append(r'''
location ^~ {location} { location ^~ {location} {
{section_body} {section_body}
} }
@ -67,6 +76,44 @@ def forward(
).replace( ).replace(
'{location}', location, '{location}', location,
)) ))
servers = []
for server_name, current_sections in sections.items():
servers.append(
r'''
server {
set $t1 $remote_addr;
if ($http_x_forwarded_for)
{
set $t1 $http_x_forwarded_for;
}
server_name {server_name};
listen 80 {default_server};
client_max_body_size 50M;
{sections_config}
}
'''.replace(
'{sections_config}', '\n'.join(current_sections)
).replace(
'{server_name}',
(
'_'
if server_name == 'default_server'
else server_name
),
).replace(
'{default_server}',
(
''
if not server_name == 'default_server'
else server_name
)
)
)
f.write(r''' f.write(r'''
events { events {
multi_accept on; multi_accept on;
@ -83,19 +130,7 @@ def forward(
access_log /dev/null combined; access_log /dev/null combined;
access_log /dev/stderr main; access_log /dev/stderr main;
server { {servers_config}
set $t1 $remote_addr;
if ($http_x_forwarded_for)
{
set $t1 $http_x_forwarded_for;
}
listen 80;
client_max_body_size 50M;
{sections_config}
}
map $http_upgrade $connection_upgrade { map $http_upgrade $connection_upgrade {
default upgrade; default upgrade;
@ -103,7 +138,7 @@ def forward(
} }
} }
'''.replace( '''.replace(
'{sections_config}', '\n'.join(sections) '{servers_config}', '\n'.join(servers)
)) ))
def ssl(input_json, output_conf): def ssl(input_json, output_conf):
@ -149,6 +184,29 @@ server {
for server in ssl_nginx['servers']: for server in ssl_nginx['servers']:
servers.append( servers.append(
r''' r'''
server {
set $t1 $remote_addr;
if ($http_x_forwarded_for)
{
set $t1 $http_x_forwarded_for;
}
listen 80;
server_name {server_names};
client_max_body_size {client_max_body_size};
location ~ ^/.well-known/acme-challenge/ {
alias /var/www/;
try_files $uri =404;
}
location ~ {
return 444;
}
}
server { server {
set $t1 $remote_addr; set $t1 $remote_addr;
if ($http_x_forwarded_for) if ($http_x_forwarded_for)

@ -5,8 +5,8 @@ services:
context: . context: .
dockerfile: ./docker/app/Dockerfile dockerfile: ./docker/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/cache/:/app/tmp/cache/:ro
restart: always restart: always
ssl-app: ssl-app:
build: build: