-
Star
(343)
You must be signed in to star a gist -
Fork
(108)
You must be signed in to fork a gist
-
-
Save nrollr/9a39bb636a820fb97eec2ed85e473d38 to your computer and use it in GitHub Desktop.
# UPDATED 17 February 2019 | |
# Redirect all HTTP traffic to HTTPS | |
server { | |
listen 80; | |
listen [::]:80; | |
server_name www.domain.com domain.com; | |
return 301 https://$host$request_uri; | |
} | |
# SSL configuration | |
server { | |
listen 443 ssl http2; | |
listen [::]:443 ssl http2; | |
server_name www.domain.com domain.com; | |
ssl_certificate /etc/letsencrypt/live/www.domain.com/fullchain.pem; | |
ssl_certificate_key /etc/letsencrypt/live/www.domain.com/privkey.pem; | |
# Improve HTTPS performance with session resumption | |
ssl_session_cache shared:SSL:10m; | |
ssl_session_timeout 10m; | |
# Enable server-side protection against BEAST attacks | |
ssl_protocols TLSv1.2; | |
ssl_prefer_server_ciphers on; | |
ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384"; | |
# RFC-7919 recommended: https://wiki.mozilla.org/Security/Server_Side_TLS#ffdhe4096 | |
ssl_dhparam /etc/ssl/ffdhe4096.pem; | |
ssl_ecdh_curve secp521r1:secp384r1; | |
# Aditional Security Headers | |
# ref: https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security | |
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"; | |
# ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options | |
add_header X-Frame-Options DENY always; | |
# ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options | |
add_header X-Content-Type-Options nosniff always; | |
# ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection | |
add_header X-Xss-Protection "1; mode=block" always; | |
# Enable OCSP stapling | |
# ref. http://blog.mozilla.org/security/2013/07/29/ocsp-stapling-in-firefox | |
ssl_stapling on; | |
ssl_stapling_verify on; | |
ssl_trusted_certificate /etc/letsencrypt/live/www.domain.com/fullchain.pem; | |
resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] valid=300s; # Cloudflare | |
resolver_timeout 5s; | |
# Required for LE certificate enrollment using certbot | |
location '/.well-known/acme-challenge' { | |
default_type "text/plain"; | |
root /var/www/html; | |
} | |
location / { | |
root /var/www/html; | |
} | |
} |
nrollr
commented
Oct 11, 2019
via email
Thanks for the infomation about
ssl_dhparam
part, though 4096 takes too long to generate, and ashttps://mozilla.github.io/server-side-tls/ssl-config-generator/
suggested, I use 2048 instead.
Thank you after all, helped a lot.use this instead it will speed it up :D
openssl dhparam -dsaparam -out dhparam.pem 4096
@AKApumkin you probably meant openssl dhparam -dsaparam -out dhparam.pem 2048
;-)
@nrollr Nope, defiantly 4096. That command will generate the 4096 much faster. There's a good explanation of why here
thanks for this snippet!
if I'm not mistaken the acme protocol requires port 80 for the http-01 challenge. something like below should do:
server {
listen 80;
listen [::]:80;
server_name www.domain.com domain.com;
location '/.well-known/acme-challenge' {
default_type "text/plain";
root /var/www/html;
}
location / {
return 301 https://$host$request_uri;
}
}
@kmcminn actually it tries HTTPs first
You can use Mozilla SSL Configuration Generator:
https://ssl-config.mozilla.org/#server=nginx&version=1.18.0-r0&config=intermediate&openssl=1.1.1g-r0&guideline=5.6
A real-world working example:
https://github.com/vald-phoenix/gitea/blob/master/conf/nginx.conf