summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2020-08-28 21:13:35 +0200
committerChristian Pointner <equinox@spreadspace.org>2020-08-28 21:13:35 +0200
commit6b115ba61541b4ea158b102e9fe32658894189af (patch)
tree66abbef7825b52c084baf82f7645c1235155f9f3
parenthttp|imap-proxy: fix tls encryption to backend (allow TLS1.0) (diff)
nginx/vhost: static file template and catchall site for ch-http-proxy
-rw-r--r--chaos-at-home/ch-http-proxy.yml33
-rw-r--r--roles/nginx/vhost/defaults/main.yml16
-rw-r--r--roles/nginx/vhost/templates/static-files-with-acme.conf.j236
3 files changed, 83 insertions, 2 deletions
diff --git a/chaos-at-home/ch-http-proxy.yml b/chaos-at-home/ch-http-proxy.yml
index 9a80a446..dc57ad6f 100644
--- a/chaos-at-home/ch-http-proxy.yml
+++ b/chaos-at-home/ch-http-proxy.yml
@@ -11,6 +11,20 @@
- role: nginx/base
- role: nginx/vhost
nginx_vhost:
+ default: yes
+ name: web
+ template: static-files-with-acme
+ acme: yes
+ hostnames:
+ - web.chaos-at-home.org
+ root: /var/www/default
+ index: index.html
+ acmetool_cert_config:
+ request:
+ challenge:
+ http-self-test: false
+ - role: nginx/vhost
+ nginx_vhost:
name: webmail
template: generic-proxy-no-buffering-with-acme
acme: yes
@@ -61,6 +75,25 @@
regexp: '^MinProtocol\s*='
line: 'MinProtocol = TLSv1.0'
+ - name: create directory for default server
+ file:
+ path: /var/www/default
+ state: directory
+
+ - name: install index.html for default server
+ copy:
+ dest: /var/www/default/index.html
+ content: |
+ <html>
+ <head>
+ <title>No Such Site</title>
+ </head>
+ <body>
+ <div style="text-align: center; margin-top: 4em; margin-left:auto; margin-right:auto; font-family: Helvetica, Arial, Sans-Serif;">
+ <h2 style="">You have reached the chaos-at-home internal webserver, however the URL that you used is unknown to this host.</h2>
+ </div>
+ </body>
+ </html>
# - name: install systemd service unit for service-ip
# copy:
# dest: /etc/systemd/system/http-service-ip.service
diff --git a/roles/nginx/vhost/defaults/main.yml b/roles/nginx/vhost/defaults/main.yml
index dfedb50b..eea545c8 100644
--- a/roles/nginx/vhost/defaults/main.yml
+++ b/roles/nginx/vhost/defaults/main.yml
@@ -4,10 +4,22 @@
# template: generic-proxy-no-buffering-with-acme
# acme: yes
# hostnames:
-# - example.com
-# - www.example.com
+# - example.com
+# - www.example.com
# proxy_pass: http://127.0.0.1:8080
+# default: yes
# nginx_vhost:
# name: other-example
# content: "<<< content of vhost >>>"
+
+# nginx_vhost:
+# name: static
+# template: static-files-with-acme
+# acme: yes
+# hostnames:
+# - static.example.com
+# root: /srv/www/static
+# index: index.html
+# autoindex:
+# format: json
diff --git a/roles/nginx/vhost/templates/static-files-with-acme.conf.j2 b/roles/nginx/vhost/templates/static-files-with-acme.conf.j2
new file mode 100644
index 00000000..f99d6eb4
--- /dev/null
+++ b/roles/nginx/vhost/templates/static-files-with-acme.conf.j2
@@ -0,0 +1,36 @@
+server {
+ listen 80{% if 'default' in nginx_vhost and nginx_vhost.default %} default_server{% endif %};
+ listen [::]:80{% if 'default' in nginx_vhost and nginx_vhost.default %} default_server{% endif %};
+ server_name {{ nginx_vhost.hostnames | join(' ') }};
+
+ include snippets/acmetool.conf;
+
+ location / {
+ return 301 https://$host$request_uri;
+ }
+}
+
+server {
+ listen 443 ssl http2{% if 'default' in nginx_vhost and nginx_vhost.default %} default_server{% endif %};
+ listen [::]:443 ssl http2{% if 'default' in nginx_vhost and nginx_vhost.default %} default_server{% endif %};
+ server_name {{ nginx_vhost.hostnames | join(' ') }};
+
+ include snippets/acmetool.conf;
+ include snippets/tls{% if 'tls_variant' in nginx_vhost %}-{{ nginx_vhost.tls_variant }}{% endif %}.conf;
+ ssl_certificate /var/lib/acme/live/{{ nginx_vhost.hostnames[0] }}/fullchain;
+ ssl_certificate_key /var/lib/acme/live/{{ nginx_vhost.hostnames[0] }}/privkey;
+ include snippets/hsts.conf;
+
+ location / {
+ root {{ nginx_vhost.root }};
+{% if 'index' in nginx_vhost %}
+ index {{ nginx_vhost.index }};
+{% endif %}
+{% if 'autoindex' in nginx_vhost %}
+ autoindex on;
+{% if 'format' in nginx_vhost.autoindex %}
+ autoindex_format {{ nginx_vhost.autoindex.format }};
+{% endif %}
+{% endif %}
+ }
+}