Dashboards not loading when using HTTPS (Nginx proxy) [SOLVED]

Hi there,

I set up the latest version of Metabase with Nginx as a reverse proxy and PostgreSQL as database engine in a Dockerized environment. Everything works fine with HTTP.
I recently switched to HTTPS (Let's Encrypt + Nginx still in a Dockerized environement docker-compose.yaml available here: Dropshare Apps - for macOS and iOS). Most of the features work fine, I only have a problem with Dashboards not loading. I get this error indefinitely:

Blockquote Still Waiting...
This usually takes an average of 0 seconds.
(This is a bit long for a dashboard)

Here's my Ngix conf:

listen      80;
listen [::]:80;
server_name metabase.xxx.com;

location / {
    return 301 https://metabase.xxx.com$request_uri;
}

#for certbot challenges (renewal process)
location ~ /.well-known/acme-challenge {
    allow all;
    root /data/letsencrypt;
}
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name metabase.xxx.com;

server_tokens off;

ssl on;

ssl_certificate /etc/letsencrypt/live/metabase.xxx.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/metabase.xxx.com/privkey.pem;

ssl_buffer_size 8k;

ssl_dhparam /etc/ssl/certs/dhparam-2048.pem;

ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_prefer_server_ciphers on;

ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;

ssl_ecdh_curve secp384r1;
ssl_session_tickets off;

# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4;

location / {
    proxy_pass http://metabase:3000;
    proxy_connect_timeout 600;
    proxy_send_timeout 600;
    proxy_read_timeout 600;
    send_timeout 600;
}

Any ideas? This seems related to the SSL/TLS configuration, the very same setup works without SSL/TLS.
Thanks!

Don’t know - it could be Settings > General > Site URL not having https?

Right, it wasn’t set to https, I changed it and restarted the system, it doesn’t have any effect.

Also, all the other features (questions, raw data etc.) stop working after trying to load a dashboard.

PS: I’m not using Jetty https features at all since Metabase is served through Nginx.

Oh well, was worth the try though … yep, understood that you’re not using https on Jetty but offloading that on nginx.

Just remembered this thread Metabase 0.30 RC: Queries timing out, other issues (AWS ALB HTTP/2 related) with - some of it - also seems proxy related.

Thanks for pointing that thread out, it helped me fix the issue.
Somehow switching from enforcing http2 to http1 fixed the issue:

listen 443 ssl http2;
listen [::]:443 ssl http2;

to

listen 443 ssl;
listen [::]:443 ssl;

I honestly have no idea why this works though.

Thanks!

1 Like