Skip to content

Instantly share code, notes, and snippets.

@Tristor
Created February 23, 2017 19:41
Show Gist options
  • Select an option

  • Save Tristor/8bb758c9e8ad67afffb1eb6e9d69c8cf to your computer and use it in GitHub Desktop.

Select an option

Save Tristor/8bb758c9e8ad67afffb1eb6e9d69c8cf to your computer and use it in GitHub Desktop.

Revisions

  1. Tristor created this gist Feb 23, 2017.
    110 changes: 110 additions & 0 deletions matrix-synapse.conf
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,110 @@
    server {
    listen 80;
    listen [::]:80;
    server_name matrix.tristor.ro;

    location '/.well-known/acme-challenge' {
    default_type "text/plain";
    allow all;
    root /var/www/matrix.tristor.ro/public/;
    }

    # Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
    return 301 https://$host$request_uri;
    }

    server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name matrix.tristor.ro;

    # certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
    ssl_certificate /etc/nginx/ssl/matrix.tristor.ro.crt;
    ssl_certificate_key /etc/nginx/ssl/matrix.tristor.ro.key;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;

    # Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
    ssl_dhparam /etc/nginx/ssl/dhparam.pem;

    # modern configuration. tweak to your needs.
    ssl_protocols TLSv1.2;
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
    ssl_prefer_server_ciphers on;

    # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
    add_header Strict-Transport-Security max-age=15768000;

    # OCSP Stapling ---
    # fetch OCSP records from URL in ssl_certificate and cache them
    ssl_stapling on;
    ssl_stapling_verify on;

    ## verify chain of trust of OCSP response using Root CA and Intermediate certs
    ssl_trusted_certificate /etc/nginx/ssl/ocsp-bundle.crt;

    resolver 4.2.2.2;

    location / {
    root /var/www/matrix.tristor.ro/public/;
    index index.html index.htm;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root /usr/share/nginx/html;
    }

    # For Matrix Synapse client connections
    location /_matrix {
    proxy_pass http://localhost:8008;
    proxy_set_header X-Forwarded-For $remote_addr;
    }

    location '/.well-known/acme-challenge' {
    default_type "text/plain";
    allow all;
    root /var/www/matrix.tristor.ro/public/;
    }
    }

    server {
    listen 8448 ssl http2;
    listen [::]:8448 ssl http2;
    server_name matrix.tristor.ro;

    # certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
    ssl_certificate /etc/nginx/ssl/matrix.tristor.ro.crt;
    ssl_certificate_key /etc/nginx/ssl/matrix.tristor.ro.key;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;

    # Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
    ssl_dhparam /etc/nginx/ssl/dhparam.pem;

    # modern configuration. tweak to your needs.
    ssl_protocols TLSv1.2;
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
    ssl_prefer_server_ciphers on;

    # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
    add_header Strict-Transport-Security max-age=15768000;

    # OCSP Stapling ---
    # fetch OCSP records from URL in ssl_certificate and cache them
    ssl_stapling on;
    ssl_stapling_verify on;

    ## verify chain of trust of OCSP response using Root CA and Intermediate certs
    ssl_trusted_certificate /etc/nginx/ssl/ocsp-bundle.crt;

    resolver 4.2.2.2;

    # For Matrix Synapse federation connections
    location /_matrix {
    proxy_pass http://localhost:8008;
    proxy_set_header X-Forwarded-For $remote_addr;
    }
    }