From ddb738a22a0033e14d31ff8fdfba6d8894fc69b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bauer?= Date: Sun, 29 Jan 2017 11:01:53 +0100 Subject: [PATCH] added nginx example ssl configuration file with free letsencrypt.org certificates --- contrib/nginx/zammad_ssl.conf | 143 ++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 contrib/nginx/zammad_ssl.conf diff --git a/contrib/nginx/zammad_ssl.conf b/contrib/nginx/zammad_ssl.conf new file mode 100644 index 000000000..a9c4e756d --- /dev/null +++ b/contrib/nginx/zammad_ssl.conf @@ -0,0 +1,143 @@ +# +# this is an example nginx config for zammad with free letsencrypt.org ssl certificates +# replace all occurrences of example.com with your domain +# when creating letsencrypt certificates the first time comment out the https parts in the config or nginx will not start +# create letsencrypt certificate by: /usr/bin/letsencrypt certonly --rsa-key-size 4096 --duplicate --text --webroot-path /var/www/html/ --webroot -d example.com -d www.example.com +# create dhparam.pem by: openssl dhparam -out /etc/nginx/ssl/dhparam.pem 4096 +# download x3 certificate by: wget -q https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem -P /etc/nginx/ssl +# you can test your ssl configuration @ https://www.ssllabs.com/ssltest/analyze.html +# + +upstream zammad {7 + server localhost:3000; +} + +upstream zammad-websocket { + server localhost:6042; +} + +server { + listen 80; + listen [::]:80; + + server_name example.com www.example.com; + + access_log /var/log/nginx/example.com.access.log; + error_log /var/log/nginx/example.com.error.log; + + location /.well-known/ { + root /var/www/html; + } + + location / { + rewrite ^/(.*)$ https://www.example.com/$1 permanent; + } +} + + +server { + listen 443 ssl http2; + listen [::]:443 ssl http2; + + server_name example.com; + + ssl_certificate /etc/nginx/ssl/example.com-fullchain.pem; + ssl_certificate_key /etc/nginx/ssl/example.com-privkey.pem; + + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + + ssl_ciphers HIGH:!aNULL:!MD5; + + ssl_dhparam /etc/nginx/ssl/dhparam.pem; + + ssl_prefer_server_ciphers on; + + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 180m; + + ssl_stapling on; + ssl_stapling_verify on; + + ssl_trusted_certificate /etc/nginx/ssl/lets-encrypt-x3-cross-signed.pem; + + resolver 8.8.8.8 8.8.4.4; + + add_header Strict-Transport-Security "max-age=31536000" always; + + access_log /var/log/nginx/example.com.access.log; + error_log /var/log/nginx/example.com.error.log; + + rewrite ^/(.*)$ https://www.example.com/$1 permanent; +} + +server { + listen 443 ssl http2; + listen [::]:443 ssl http2; + + server_name www.example.com; + + ssl_certificate /etc/nginx/ssl/example.com-fullchain.pem; + ssl_certificate_key /etc/nginx/ssl/example.com-privkey.pem; + + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + + ssl_ciphers HIGH:!aNULL:!MD5; + + ssl_dhparam /etc/nginx/ssl/dhparam.pem; + + ssl_prefer_server_ciphers on; + + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 180m; + + ssl_stapling on; + ssl_stapling_verify on; + + ssl_trusted_certificate /etc/nginx/ssl/lets-encrypt-x3-cross-signed.pem; + + resolver 8.8.8.8 8.8.4.4; + + add_header Strict-Transport-Security "max-age=31536000" always; + + location = /robots.txt { + access_log off; log_not_found off; + } + + location = /favicon.ico { + access_log off; log_not_found off; + } + + root /opt/zammad/public; + + access_log /var/log/nginx/example.com.access.log; + error_log /var/log/nginx/example.com.error.log; + + client_max_body_size 50M; + + location ~ ^/(assets/|robots.txt|humans.txt|favicon.ico) { + expires max; + } + + location /ws { + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + proxy_set_header CLIENT_IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_read_timeout 86400; + proxy_pass http://zammad-websocket; + } + + location / { + proxy_set_header Host $http_host; + proxy_set_header CLIENT_IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_read_timeout 180; + proxy_pass http://zammad; + + gzip on; + gzip_types text/plain text/xml text/css image/svg+xml application/javascript application/x-javascript application/json application/xml; + gzip_proxied any; + } + +}