From d08f287d738d51b64a44b04520e9ba4a14bf5f9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Fra=C3=9F?= Date: Wed, 3 Jul 2024 22:31:49 +0200 Subject: [PATCH] [mod] roles:synapse-and-nginx:tls mode --- roles/synapse-and-nginx/defaults/main.json | 3 +- roles/synapse-and-nginx/templates/conf.j2 | 49 +++++++++++++++------- roles/synapse-and-nginx/vardef.json | 15 +++++++ 3 files changed, 50 insertions(+), 17 deletions(-) create mode 100644 roles/synapse-and-nginx/vardef.json diff --git a/roles/synapse-and-nginx/defaults/main.json b/roles/synapse-and-nginx/defaults/main.json index 8a172d0..e504fa6 100644 --- a/roles/synapse-and-nginx/defaults/main.json +++ b/roles/synapse-and-nginx/defaults/main.json @@ -1,3 +1,4 @@ { - "var_synapse_and_nginx_domain": "REPLACE_ME" + "var_synapse_and_nginx_domain": "REPLACE_ME", + "var_synapse_and_nginx_tls_mode": "enable" } diff --git a/roles/synapse-and-nginx/templates/conf.j2 b/roles/synapse-and-nginx/templates/conf.j2 index e59fb99..d1bace3 100644 --- a/roles/synapse-and-nginx/templates/conf.j2 +++ b/roles/synapse-and-nginx/templates/conf.j2 @@ -1,19 +1,4 @@ -server { - listen 80; - listen [::]:80; - listen 443 ssl; - listen [::]:443 ssl; - - ## For the federation port - listen 8448 ssl http2 default_server; - listen [::]:8448 ssl http2 default_server; - - server_name {{var_synapse_and_nginx_domain}}; - - ssl_certificate /etc/ssl/fullchains/{{var_synapse_and_nginx_domain}}.pem; - ssl_certificate_key /etc/ssl/private/{{var_synapse_and_nginx_domain}}.pem; - include /etc/nginx/ssl-hardening.conf; - +{% macro synapse_common() %} location ~ ^(/_matrix|/_synapse/client) { proxy_pass http://localhost:8008; proxy_set_header X-Forwarded-For $remote_addr; @@ -24,4 +9,36 @@ server { proxy_http_version 1.1; } +{% endif %} + +server { + server_name {{var_synapse_and_nginx_domain}}; + + listen 80; + listen [::]:80; + +{% if (var_synapse_and_nginx_tls_mode == "force") %} + return 301 https://$http_host$request_uri; +{% else %} + {{ synapse_common() }} +{% endif %} } + +{% if (var_element_and_nginx_tls_mode != "disable") %} +server { + server_name {{var_synapse_and_nginx_domain}}; + + listen 443 ssl http2; + listen [::]:443 ssl http2; + + ## For the federation port + listen 8448 ssl http2 default_server; + listen [::]:8448 ssl http2 default_server; + + ssl_certificate_key /etc/ssl/private/{{var_synapse_and_nginx_domain}}.pem; + ssl_certificate /etc/ssl/fullchains/{{var_synapse_and_nginx_domain}}.pem; + include /etc/nginx/ssl-hardening.conf; + + {{ synapse_common() }} +} +{% endif %} diff --git a/roles/synapse-and-nginx/vardef.json b/roles/synapse-and-nginx/vardef.json new file mode 100644 index 0000000..e1e1a74 --- /dev/null +++ b/roles/synapse-and-nginx/vardef.json @@ -0,0 +1,15 @@ +{ + "domain": { + "type": "string", + "mandatory": false + }, + "tls_mode": { + "type": "string", + "options": [ + "disable", + "enable", + "force" + ], + "mandatory": false + } +}