summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--roles/apps/collabora/code/tasks/main.yml13
-rw-r--r--roles/apps/collabora/code/tasks/nginx-vhost.yml16
-rw-r--r--roles/apps/collabora/code/templates/nginx-vhost.conf.j2153
-rw-r--r--roles/nginx/vhost/defaults/main.yml14
-rw-r--r--roles/nginx/vhost/templates/generic.conf.j264
5 files changed, 130 insertions, 130 deletions
diff --git a/roles/apps/collabora/code/tasks/main.yml b/roles/apps/collabora/code/tasks/main.yml
index 8f4acc76..84efec5c 100644
--- a/roles/apps/collabora/code/tasks/main.yml
+++ b/roles/apps/collabora/code/tasks/main.yml
@@ -45,17 +45,8 @@
include_role:
name: kubernetes/standalone/pod
-- name: configure nginx vhost
+- name: install nginx vhost config
loop: "{{ collabora_code_instances | dict2items }}"
loop_control:
label: "{{ item.key }}"
- vars:
- nginx_vhost:
- name: "collabora-code-{{ item.key }}"
- content: "{{ lookup('template', 'nginx-vhost.conf.j2') }}"
- tls:
- certificate_provider: "{{ acme_client }}"
- hostnames:
- - "{{ item.value.hostname }}"
- include_role:
- name: nginx/vhost
+ include_tasks: nginx-vhost.yml
diff --git a/roles/apps/collabora/code/tasks/nginx-vhost.yml b/roles/apps/collabora/code/tasks/nginx-vhost.yml
new file mode 100644
index 00000000..218b4a94
--- /dev/null
+++ b/roles/apps/collabora/code/tasks/nginx-vhost.yml
@@ -0,0 +1,16 @@
+- name: render nginx-vhost custom config
+ set_fact:
+ collabora_code_nginx_vhost_custom: "{{ lookup('template', 'nginx-vhost.conf.j2') }}"
+
+- name: configure nginx vhost
+ vars:
+ nginx_vhost:
+ name: "collabora-code-{{ item.key }}"
+ template: generic
+ tls:
+ certificate_provider: "{{ acme_client }}"
+ hostnames:
+ - "{{ item.value.hostname }}"
+ custom: "{{ collabora_code_nginx_vhost_custom }}"
+ include_role:
+ name: nginx/vhost
diff --git a/roles/apps/collabora/code/templates/nginx-vhost.conf.j2 b/roles/apps/collabora/code/templates/nginx-vhost.conf.j2
index 8dd67fb7..67502e20 100644
--- a/roles/apps/collabora/code/templates/nginx-vhost.conf.j2
+++ b/roles/apps/collabora/code/templates/nginx-vhost.conf.j2
@@ -1,124 +1,99 @@
-server {
- listen 80;
- listen [::]:80;
- server_name {{ item.value.hostname }};
+client_max_body_size 128M;
- include snippets/{{ acme_client }}.conf;
-
- location / {
- return 301 https://$host$request_uri;
- }
-}
-
-server {
- listen 443 ssl http2;
- listen [::]:443 ssl http2;
- server_name {{ item.value.hostname }};
-
- include snippets/{{ acme_client }}.conf;
- include snippets/tls.conf;
- ssl_certificate {{ x509_certificate_path_fullchain }};
- ssl_certificate_key {{ x509_certificate_path_key }};
- include snippets/hsts.conf;
-
-
- client_max_body_size 128M;
-
- # static files
+# static files
{% if item.value.version | collabora_code_loolvcool %}
- location ^~ /loleaflet {
+location ^~ /loleaflet {
{% else %}
- location ^~ /browser {
+location ^~ /browser {
{% endif %}
- include snippets/proxy-nobuff.conf;
- include snippets/proxy-forward-headers.conf;
+ include snippets/proxy-nobuff.conf;
+ include snippets/proxy-forward-headers.conf;
- proxy_set_header Host $http_host;
- proxy_pass http://127.0.0.1:{{ item.value.port }};
+ proxy_set_header Host $http_host;
+ proxy_pass http://127.0.0.1:{{ item.value.port }};
- proxy_redirect http://$host/ https://$host/;
- proxy_redirect http://$host:9980/ https://$host/;
- }
+ proxy_redirect http://$host/ https://$host/;
+ proxy_redirect http://$host:9980/ https://$host/;
+}
- # WOPI discovery URL
- location ^~ /hosting/discovery {
- include snippets/proxy-nobuff.conf;
- include snippets/proxy-forward-headers.conf;
+# WOPI discovery URL
+location ^~ /hosting/discovery {
+ include snippets/proxy-nobuff.conf;
+ include snippets/proxy-forward-headers.conf;
- proxy_set_header Host $http_host;
- proxy_pass http://127.0.0.1:{{ item.value.port }};
+ proxy_set_header Host $http_host;
+ proxy_pass http://127.0.0.1:{{ item.value.port }};
- proxy_redirect http://$host/ https://$host/;
- proxy_redirect http://$host:9980/ https://$host/;
- }
+ proxy_redirect http://$host/ https://$host/;
+ proxy_redirect http://$host:9980/ https://$host/;
+}
- # Capabilities
- location ^~ /hosting/capabilities {
- include snippets/proxy-nobuff.conf;
- include snippets/proxy-forward-headers.conf;
+# Capabilities
+location ^~ /hosting/capabilities {
+ include snippets/proxy-nobuff.conf;
+ include snippets/proxy-forward-headers.conf;
- proxy_set_header Host $http_host;
- proxy_pass http://127.0.0.1:{{ item.value.port }};
+ proxy_set_header Host $http_host;
+ proxy_pass http://127.0.0.1:{{ item.value.port }};
- proxy_redirect http://$host/ https://$host/;
- proxy_redirect http://$host:9980/ https://$host/;
- }
+ proxy_redirect http://$host/ https://$host/;
+ proxy_redirect http://$host:9980/ https://$host/;
+}
- # main websocket
+# main websocket
{% if item.value.version | collabora_code_loolvcool %}
- location ~ ^/lool/(.*)/ws$ {
+location ~ ^/lool/(.*)/ws$ {
{% else %}
- location ~ ^/cool/(.*)/ws$ {
+location ~ ^/cool/(.*)/ws$ {
{% endif %}
- include snippets/proxy-nobuff.conf;
- include snippets/proxy-forward-headers.conf;
+ include snippets/proxy-nobuff.conf;
+ include snippets/proxy-forward-headers.conf;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection $connection_upgrade;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection $connection_upgrade;
- proxy_read_timeout 36000s;
+ proxy_read_timeout 36000s;
- proxy_set_header Host $http_host;
- proxy_pass http://127.0.0.1:{{ item.value.port }};
+ proxy_set_header Host $http_host;
+ proxy_pass http://127.0.0.1:{{ item.value.port }};
- proxy_redirect http://$host/ https://$host/;
- proxy_redirect http://$host:9980/ https://$host/;
- }
+ proxy_redirect http://$host/ https://$host/;
+ proxy_redirect http://$host:9980/ https://$host/;
+}
- # download, presentation and image upload
+# download, presentation and image upload
{% if item.value.version | collabora_code_loolvcool %}
- location ~ ^/lool {
+location ~ ^/lool {
{% else %}
- location ~ ^/(c|l)ool {
+location ~ ^/(c|l)ool {
{% endif %}
- include snippets/proxy-nobuff.conf;
- include snippets/proxy-forward-headers.conf;
+ include snippets/proxy-nobuff.conf;
+ include snippets/proxy-forward-headers.conf;
- proxy_set_header Host $http_host;
- proxy_pass http://127.0.0.1:{{ item.value.port }};
+ proxy_set_header Host $http_host;
+ proxy_pass http://127.0.0.1:{{ item.value.port }};
- proxy_redirect http://$host/ https://$host/;
- proxy_redirect http://$host:9980/ https://$host/;
- }
+ proxy_redirect http://$host/ https://$host/;
+ proxy_redirect http://$host:9980/ https://$host/;
+}
- # Admin Console websocket
+# Admin Console websocket
{% if item.value.version | collabora_code_loolvcool %}
- location ^~ /lool/adminws {
+location ^~ /lool/adminws {
{% else %}
- location ^~ /cool/adminws {
+location ^~ /cool/adminws {
{% endif %}
- include snippets/proxy-nobuff.conf;
- include snippets/proxy-forward-headers.conf;
+ include snippets/proxy-nobuff.conf;
+ include snippets/proxy-forward-headers.conf;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection $connection_upgrade;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection $connection_upgrade;
- proxy_read_timeout 36000s;
+ proxy_read_timeout 36000s;
- proxy_set_header Host $http_host;
- proxy_pass http://127.0.0.1:{{ item.value.port }};
+ proxy_set_header Host $http_host;
+ proxy_pass http://127.0.0.1:{{ item.value.port }};
- proxy_redirect http://$host/ https://$host/;
- proxy_redirect http://$host:9980/ https://$host/;
- }
+ proxy_redirect http://$host/ https://$host/;
+ proxy_redirect http://$host:9980/ https://$host/;
}
diff --git a/roles/nginx/vhost/defaults/main.yml b/roles/nginx/vhost/defaults/main.yml
index 1447fb14..0eb67b42 100644
--- a/roles/nginx/vhost/defaults/main.yml
+++ b/roles/nginx/vhost/defaults/main.yml
@@ -60,5 +60,19 @@
# fastcgi_pass unix:/run/fcgiwrap/foo.sock;
# nginx_vhost:
+# name: example-custom
+# template: generic
+# tls:
+# variant: legacy
+# hsts: false
+# certificate_provider: acmetool
+# hostnames:
+# - static.example.com
+# custom: |-
+# location / {
+# foo "bar";
+# }
+
+# nginx_vhost:
# name: other-example
# content: "<<< content of vhost >>>"
diff --git a/roles/nginx/vhost/templates/generic.conf.j2 b/roles/nginx/vhost/templates/generic.conf.j2
index 356c74dc..64569a5e 100644
--- a/roles/nginx/vhost/templates/generic.conf.j2
+++ b/roles/nginx/vhost/templates/generic.conf.j2
@@ -47,13 +47,16 @@ server {
{% endif %}
{% endif %}
-{% if 'extra_directives' in nginx_vhost %}
- {{ nginx_vhost.extra_directives | indent(4) }}
+{% if 'custom' in nginx_vhost %}
+ {{ nginx_vhost.custom | trim | indent(4) }}
+{% else %}
+{% if 'extra_directives' in nginx_vhost %}
+ {{ nginx_vhost.extra_directives | trim | indent(4) }}
-{% endif %}
-{% for path, location in nginx_vhost.locations.items() %}
+{% endif %}
+{% for path, location in nginx_vhost.locations.items() %}
location {{ path }} {
-{% if 'proxy_pass' in location %}
+{% if 'proxy_pass' in location %}
include snippets/proxy-nobuff.conf;
proxy_set_header Host $host;
include snippets/proxy-forward-headers.conf;
@@ -63,40 +66,41 @@ server {
proxy_set_header Connection $connection_upgrade;
proxy_pass {{ location.proxy_pass }};
-{% if 'proxy_redirect' in location %}
-{% for entry in location.proxy_redirect %}
+{% if 'proxy_redirect' in location %}
+{% for entry in location.proxy_redirect %}
proxy_redirect {{ entry.redirect }} {{ entry.replacement }};
-{% endfor %}
-{% endif %}
-{% if 'proxy_ssl' in location %}
-{% for prop in (location.proxy_ssl | list | sort) %}
+{% endfor %}
+{% endif %}
+{% if 'proxy_ssl' in location %}
+{% for prop in (location.proxy_ssl | list | sort) %}
proxy_ssl_{{ prop }} {{ location.proxy_ssl[prop] }};
-{% endfor %}
-{% endif %}
-{% elif 'return' in location %}
+{% endfor %}
+{% endif %}
+{% elif 'return' in location %}
return {{ location.return }};
-{% elif 'custom' in location %}
- {{ location.custom | indent(8) }}
-{% else %}
-{% if 'root' in location %}
+{% elif 'custom' in location %}
+ {{ location.custom | trim | indent(8) }}
+{% else %}
+{% if 'root' in location %}
root {{ location.root }};
-{% elif 'alias' in location %}
+{% elif 'alias' in location %}
alias {{ location.alias }};
-{% endif %}
-{% if 'index' in location %}
+{% endif %}
+{% if 'index' in location %}
index {{ location.index }};
-{% endif %}
-{% if 'autoindex' in location %}
+{% endif %}
+{% if 'autoindex' in location %}
autoindex on;
-{% if 'format' in location.autoindex %}
+{% if 'format' in location.autoindex %}
autoindex_format {{ nginx_vhost.autoindex.format }};
-{% endif %}
+{% endif %}
+{% endif %}
{% endif %}
-{% endif %}
-{% if 'extra_directives' in location %}
+{% if 'extra_directives' in location %}
- {{ location.extra_directives | indent(8) }}
-{% endif %}
+ {{ location.extra_directives | trim | indent(8) }}
+{% endif %}
}
-{% endfor %}
+{% endfor %}
+{% endif %}
}