Skip to content

Instantly share code, notes, and snippets.

@mfalkvidd
Last active July 9, 2025 13:30
Show Gist options
  • Save mfalkvidd/3920bd5035806a583b5c1e20eaddabae to your computer and use it in GitHub Desktop.
Save mfalkvidd/3920bd5035806a583b5c1e20eaddabae to your computer and use it in GitHub Desktop.
Thingsboard nginx reverse proxy with websocket and HTTPS support (Let's Encrypt)
server {
listen 80;
server_name EXTERNAL_THINGSBOARD_DOMAIN.com;
if ($scheme != "https") {
return 301 https://$host$request_uri;
} # managed by Certbot
}
server {
listen 443 ssl;
server_name EXTERNAL_THINGSBOARD_DOMAIN.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 1d;
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;
ssl_stapling on;
ssl_stapling_verify on;
location / {
proxy_pass http://LOCAL_THINGSGBOARD_IP_OR_DOMAN:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
}
@royoarnaud
Copy link

Thank you! WebSockets weren't working before, but your solution fixed the issue!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment