diff options
author | crupest <crupest@outlook.com> | 2022-11-20 16:32:27 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-11-20 16:32:27 +0800 |
commit | 4a726c4a66970ddc5226538a7cca138c6526e673 (patch) | |
tree | e3c62048b3bb0e14859e1c6a978966fda87b250e | |
parent | 4067ed5b45071109203369dd9b2647d37f434123 (diff) | |
download | crupest-4a726c4a66970ddc5226538a7cca138c6526e673.tar.gz crupest-4a726c4a66970ddc5226538a7cca138c6526e673.tar.bz2 crupest-4a726c4a66970ddc5226538a7cca138c6526e673.zip |
Fix cert-only acme challenge issue.
-rw-r--r-- | template/nginx/cert-only.conf.template | 13 | ||||
-rw-r--r-- | template/nginx/forbid_unknown_domain.conf | 2 | ||||
-rwxr-xr-x | tool/modules/nginx.py | 5 |
3 files changed, 19 insertions, 1 deletions
diff --git a/template/nginx/cert-only.conf.template b/template/nginx/cert-only.conf.template new file mode 100644 index 0000000..08daa8a --- /dev/null +++ b/template/nginx/cert-only.conf.template @@ -0,0 +1,13 @@ +server { + listen 80; + listen [::]:80; + server_name ${CRUPEST_NGINX_SUBDOMAIN}.${CRUPEST_DOMAIN}; + + location / { + return 444; + } + + location /.well-known/acme-challenge { + root /srv/acme; + } +} diff --git a/template/nginx/forbid_unknown_domain.conf b/template/nginx/forbid_unknown_domain.conf index 661a2b6..ae96393 100644 --- a/template/nginx/forbid_unknown_domain.conf +++ b/template/nginx/forbid_unknown_domain.conf @@ -1,6 +1,8 @@ server { listen 80 default_server; listen [::]:80 default_server; + listen 443 ssl http2 default_server; + listen [::]:443 ssl http2 default_server; return 444; } diff --git a/tool/modules/nginx.py b/tool/modules/nginx.py index 7336c3e..dbe93bb 100755 --- a/tool/modules/nginx.py +++ b/tool/modules/nginx.py @@ -25,6 +25,7 @@ static_file_template = Template(os.path.join( nginx_template_dir, 'static-file.conf.template')) reverse_proxy_template = Template(os.path.join( nginx_template_dir, 'reverse-proxy.conf.template')) +cert_only_template = Template(os.path.join(nginx_template_dir, 'cert-only.conf.template')) nginx_var_set = set.union(root_template.var_set, static_file_template.var_set, reverse_proxy_template.var_set) @@ -48,7 +49,7 @@ def nginx_config_gen(domain: str, dest: str) -> None: # generate nginx config for each site sites: list = server["sites"] for site in sites: - if site["type"] not in ['static-file', 'reverse-proxy']: + if site["type"] not in ['static-file', 'reverse-proxy', "cert-only"]: continue subdomain = site["subdomain"] local_config = config.copy() @@ -60,6 +61,8 @@ def nginx_config_gen(domain: str, dest: str) -> None: template = reverse_proxy_template local_config['CRUPEST_NGINX_UPSTREAM_NAME'] = site["upstream"]["name"] local_config['CRUPEST_NGINX_UPSTREAM_SERVER'] = site["upstream"]["server"] + elif site["type"] == 'cert-only': + template = cert_only_template with open(os.path.join(dest, f'{subdomain}.{domain}.conf'), 'w') as f: f.write(template.generate(local_config)) |