diff options
Diffstat (limited to 'roles/nginx/base')
-rw-r--r-- | roles/nginx/base/defaults/main.yml | 10 | ||||
-rw-r--r-- | roles/nginx/base/files/conf.d/connection-upgrade.conf | 6 | ||||
-rw-r--r-- | roles/nginx/base/files/snippets/hsts.conf | 1 | ||||
-rw-r--r-- | roles/nginx/base/files/snippets/proxy-nobuff.conf | 4 | ||||
-rw-r--r-- | roles/nginx/base/files/snippets/security-headers.conf | 4 | ||||
-rw-r--r-- | roles/nginx/base/files/snippets/ssl.conf | 10 | ||||
-rw-r--r-- | roles/nginx/base/handlers/main.yml | 5 | ||||
-rw-r--r-- | roles/nginx/base/tasks/main.yml | 31 |
8 files changed, 71 insertions, 0 deletions
diff --git a/roles/nginx/base/defaults/main.yml b/roles/nginx/base/defaults/main.yml new file mode 100644 index 00000000..50920f20 --- /dev/null +++ b/roles/nginx/base/defaults/main.yml @@ -0,0 +1,10 @@ +--- +nginx_pkg_variant: nginx-light + +nginx_conf_d_files: + - connection-upgrade + +nginx_snippets: + - ssl + - hsts + - proxy-nobuff diff --git a/roles/nginx/base/files/conf.d/connection-upgrade.conf b/roles/nginx/base/files/conf.d/connection-upgrade.conf new file mode 100644 index 00000000..4153effe --- /dev/null +++ b/roles/nginx/base/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/base/files/snippets/hsts.conf b/roles/nginx/base/files/snippets/hsts.conf new file mode 100644 index 00000000..4ca8396e --- /dev/null +++ b/roles/nginx/base/files/snippets/hsts.conf @@ -0,0 +1 @@ +add_header Strict-Transport-Security max-age=15768000; diff --git a/roles/nginx/base/files/snippets/proxy-nobuff.conf b/roles/nginx/base/files/snippets/proxy-nobuff.conf new file mode 100644 index 00000000..b08de70c --- /dev/null +++ b/roles/nginx/base/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/base/files/snippets/security-headers.conf b/roles/nginx/base/files/snippets/security-headers.conf new file mode 100644 index 00000000..b94d479d --- /dev/null +++ b/roles/nginx/base/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/base/files/snippets/ssl.conf b/roles/nginx/base/files/snippets/ssl.conf new file mode 100644 index 00000000..d187a7c0 --- /dev/null +++ b/roles/nginx/base/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/base/handlers/main.yml b/roles/nginx/base/handlers/main.yml new file mode 100644 index 00000000..6deed0cd --- /dev/null +++ b/roles/nginx/base/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: restart nginx + service: + name: nginx + state: restarted diff --git a/roles/nginx/base/tasks/main.yml b/roles/nginx/base/tasks/main.yml new file mode 100644 index 00000000..a975ce52 --- /dev/null +++ b/roles/nginx/base/tasks/main.yml @@ -0,0 +1,31 @@ +--- +- name: install nginx + apt: + name: "{{ nginx_pkg_variant }}" + state: present + +- name: remove nginx default config + file: + name: /etc/nginx/sites-enabled/default + 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: "{{ nginx_snippets }}" + copy: + src: "snippets/{{ item }}.conf" + dest: /etc/nginx/snippets/ + notify: restart nginx + +- name: generate Diffie-Hellman parameters + openssl_dhparam: + path: /etc/ssl/dhparams.pem + size: 2048 + notify: restart nginx |