summaryrefslogtreecommitdiff
path: root/roles/nginx
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2019-10-12 05:36:28 +0200
committerChristian Pointner <equinox@spreadspace.org>2019-10-12 05:36:28 +0200
commit8477c34bb3470341fb8ebb7b18d3d694d2941f3b (patch)
treea73cb6a053dab23b4cf1a6ef8dc92d5e214cd862 /roles/nginx
parentsk-cloudia nginx role (diff)
refactoring nginx config snippets
Diffstat (limited to 'roles/nginx')
-rw-r--r--roles/nginx/defaults/main.yml8
-rw-r--r--roles/nginx/files/conf.d/connection-upgrade.conf6
-rw-r--r--roles/nginx/files/snippets/hsts.conf1
-rw-r--r--roles/nginx/files/snippets/proxy-nobuff.conf4
-rw-r--r--roles/nginx/files/snippets/security-headers.conf4
-rw-r--r--roles/nginx/files/snippets/ssl.conf10
-rw-r--r--roles/nginx/tasks/main.yml13
-rw-r--r--roles/nginx/templates/generic-proxy-no-buffering-with-acme.conf.j212
8 files changed, 43 insertions, 15 deletions
diff --git a/roles/nginx/defaults/main.yml b/roles/nginx/defaults/main.yml
index 73b10a11..a38a95a0 100644
--- a/roles/nginx/defaults/main.yml
+++ b/roles/nginx/defaults/main.yml
@@ -1,6 +1,14 @@
---
nginx_pkg_variant: nginx-light
+nginx_conf_d_files:
+ - connection-upgrade
+
+nginx_snippets:
+ - ssl
+ - hsts
+ - proxy-nobuff
+
# nginx_vhosts:
# example:
# template: generic-proxy-no-buffering-with-acme
diff --git a/roles/nginx/files/conf.d/connection-upgrade.conf b/roles/nginx/files/conf.d/connection-upgrade.conf
new file mode 100644
index 00000000..4153effe
--- /dev/null
+++ b/roles/nginx/files/conf.d/connection-upgrade.conf
@@ -0,0 +1,6 @@
+# used for websockets
+# set http_connection to either upgrade or close (as normal)
+map $http_upgrade $connection_upgrade {
+ default upgrade;
+ '' close;
+}
diff --git a/roles/nginx/files/snippets/hsts.conf b/roles/nginx/files/snippets/hsts.conf
new file mode 100644
index 00000000..4ca8396e
--- /dev/null
+++ b/roles/nginx/files/snippets/hsts.conf
@@ -0,0 +1 @@
+add_header Strict-Transport-Security max-age=15768000;
diff --git a/roles/nginx/files/snippets/proxy-nobuff.conf b/roles/nginx/files/snippets/proxy-nobuff.conf
new file mode 100644
index 00000000..b08de70c
--- /dev/null
+++ b/roles/nginx/files/snippets/proxy-nobuff.conf
@@ -0,0 +1,4 @@
+proxy_buffering off;
+proxy_ignore_headers "X-Accel-Buffering";
+proxy_request_buffering off;
+proxy_http_version 1.1;
diff --git a/roles/nginx/files/snippets/security-headers.conf b/roles/nginx/files/snippets/security-headers.conf
new file mode 100644
index 00000000..b94d479d
--- /dev/null
+++ b/roles/nginx/files/snippets/security-headers.conf
@@ -0,0 +1,4 @@
+add_header X-Frame-Options DENY;
+add_header X-Content-Type-Options nosniff;
+add_header X-XSS-Protection "1; mode=block";
+# add_header Content-Security-Policy "default-src 'none'; connect-src 'self'; img-src 'self'; script-src 'self'; style-src 'self'";
diff --git a/roles/nginx/files/snippets/ssl.conf b/roles/nginx/files/snippets/ssl.conf
new file mode 100644
index 00000000..d187a7c0
--- /dev/null
+++ b/roles/nginx/files/snippets/ssl.conf
@@ -0,0 +1,10 @@
+ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
+ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AES:!ADH:!AECDH:!MD5;
+ssl_prefer_server_ciphers on;
+
+# openssl dhparam -out /etc/ssl/certs/dhparams.pem 2048
+ssl_dhparam /etc/ssl/dhparams.pem;
+
+ssl_session_cache shared:SSL:10m;
+ssl_session_timeout 10m;
+ssl_session_tickets off;
diff --git a/roles/nginx/tasks/main.yml b/roles/nginx/tasks/main.yml
index fd63954e..57816cea 100644
--- a/roles/nginx/tasks/main.yml
+++ b/roles/nginx/tasks/main.yml
@@ -10,12 +10,17 @@
state: absent
notify: restart nginx
+- name: install nginx config.d files
+ loop: "{{ nginx_conf_d_files }}"
+ copy:
+ src: "conf.d/{{ item }}.conf"
+ dest: /etc/nginx/conf.d/
+ notify: restart nginx
+
- name: install nginx config snippets
- loop:
- - ssl
- - hsts
+ loop: "{{ nginx_snippets }}"
copy:
- src: "{{ global_files_dir }}/common/nginx-snippets/{{ item }}.conf"
+ src: "snippets/{{ item }}.conf"
dest: /etc/nginx/snippets/
notify: restart nginx
diff --git a/roles/nginx/templates/generic-proxy-no-buffering-with-acme.conf.j2 b/roles/nginx/templates/generic-proxy-no-buffering-with-acme.conf.j2
index 784b2590..8cad2994 100644
--- a/roles/nginx/templates/generic-proxy-no-buffering-with-acme.conf.j2
+++ b/roles/nginx/templates/generic-proxy-no-buffering-with-acme.conf.j2
@@ -1,10 +1,3 @@
-# used for websockets
-# set http_connection to either upgrade or close (as normal)
-map $http_upgrade $connection_upgrade {
- default upgrade;
- '' close;
-}
-
server {
listen 80;
listen [::]:80;
@@ -29,10 +22,7 @@ server {
include snippets/hsts.conf;
location / {
- proxy_buffering off;
- proxy_ignore_headers "X-Accel-Buffering";
- proxy_request_buffering off;
- proxy_http_version 1.1;
+ include snippets/proxy-nobuff.conf;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;