aboutsummaryrefslogtreecommitdiffstats
path: root/roles/nginx
diff options
context:
space:
mode:
Diffstat (limited to 'roles/nginx')
-rw-r--r--roles/nginx/HOWTO_letsencrypt.txt26
-rw-r--r--roles/nginx/HOWTO_new_site.txt22
-rw-r--r--roles/nginx/templates/etc_nginx_nginx.conf.j29
3 files changed, 51 insertions, 6 deletions
diff --git a/roles/nginx/HOWTO_letsencrypt.txt b/roles/nginx/HOWTO_letsencrypt.txt
index ada7075..7b658ec 100644
--- a/roles/nginx/HOWTO_letsencrypt.txt
+++ b/roles/nginx/HOWTO_letsencrypt.txt
@@ -39,6 +39,32 @@ cert), do something like this:
-d static.bnewbold.net \
-d git.bnewbold.net
+ sudo certbot certonly \
+ --non-interactive \
+ --agree-tos \
+ --email webmaster@robocracy.org \
+ --webroot -w /var/www/letsencrypt \
+ -d robocracy.org -d www.robocracy.org \
+ -d adze.robocracy.org \
+ -d dav.robocracy.org \
+ -d pad.robocracy.org \
+ -d pierre-menard.robocracy.org --expand
+
+ sudo letsencrypt certonly \
+ --non-interactive \
+ --agree-tos \
+ --email bnewbold@the-nsa.org \
+ --webroot -w /var/www/letsencrypt \
+ -d bnewbold.the-nsa.org \
+ -d files.bnewbold.the-nsa.org \
+ -d hashbase.bnewbold.the-nsa.org \
+ -d modelthing.the-nsa.org \
+ -d obscurity.bnewbold.the-nsa.org \
+ -d repro.bnewbold.the-nsa.org \
+ -d perf.bnewbold.the-nsa.org --expand
+
+ # formerly: very-flat.com
+
The above will yield a cert at the following path (presumably path has the
first domain name):
diff --git a/roles/nginx/HOWTO_new_site.txt b/roles/nginx/HOWTO_new_site.txt
index 1834e93..777665b 100644
--- a/roles/nginx/HOWTO_new_site.txt
+++ b/roles/nginx/HOWTO_new_site.txt
@@ -21,6 +21,11 @@ For a reverse proxied website:
listen [::]:80;
server_name <example.com>;
+ location = /favicon.ico {
+ access_log off;
+ log_not_found off;
+ }
+
location /theme_static/ {
alias /some/static/files/dir/theme_static/;
}
@@ -35,19 +40,32 @@ For a reverse proxied website:
For SSL stuff, add this to the body:
- listen 443 ssl spdy;
- listen [::]:443 ssl spdy;
+ listen 443 ssl http2;
+ listen [::]:443 ssl http2;
ssl_certificate /etc/letsencrypt/live/<cert-name>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<cert-name>/privkey.pem;
add_header Content-Security-Policy "default-src 'self'; style-src 'self' 'unsafe-inline'";
+ #add_header Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'";
add_header X-Frame-Options "SAMEORIGIN"; # 'always' if nginx > 1.7.5
add_header X-Content-Type-Options "nosniff"; # 'always' if nginx > 1.7.5
add_header X-Xss-Protection "1";
# Enable STS with one year period (breaks http; optional)
#add_header Strict-Transport-Security "max-age=31557600; includeSubDomains";
+
+ if ($scheme = http) {
+ return 301 https://$server_name$request_uri;
+ }
+
+ # Let's Encrypt SSL Certs
+ location /.well-known/acme-challenge/ {
+ root /var/www/letsencrypt;
+ autoindex off;
+ }
+
+
If your site is going to have inline Javascript (pretty common), you might need
to swith the Content-Security-Policy line to:
diff --git a/roles/nginx/templates/etc_nginx_nginx.conf.j2 b/roles/nginx/templates/etc_nginx_nginx.conf.j2
index 03e1a6c..7c99d7e 100644
--- a/roles/nginx/templates/etc_nginx_nginx.conf.j2
+++ b/roles/nginx/templates/etc_nginx_nginx.conf.j2
@@ -1,8 +1,9 @@
-{{ ansible_managed }}
+# {{ ansible_managed }}
user www-data;
-worker_processes 4;
+worker_processes auto;
pid /run/nginx.pid;
+include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
@@ -22,7 +23,7 @@ http {
types_hash_max_size 2048;
# server_tokens off;
- # server_names_hash_bucket_size 64;
+ server_names_hash_bucket_size 256;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
@@ -32,7 +33,7 @@ http {
# SSL Settings
##
- ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
+ ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_ciphers EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:128m;