Skip to content

Behind a reverse proxy

Terminate TLS at the proxy and forward to 127.0.0.1:5000. The proxy must pass WebSockets, because every page runs over a Blazor Server connection. ASPNETCORE_FORWARDEDHEADERS_ENABLED=true (above) makes fuseraft-web trust the proxy’s X-Forwarded-Proto and X-Forwarded-For, so sign-in cookies are marked secure and rate limiting sees real client addresses. Only set it when a proxy sits in front, because clients could otherwise forge those headers.

Caddy:

fuseraft.example.com {
reverse_proxy 127.0.0.1:5000
}

nginx:

server {
listen 443 ssl;
server_name fuseraft.example.com;
# ssl_certificate …; ssl_certificate_key …;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 1h; # long-lived Blazor and approval connections
}
}

fuseraft-web logs a warning at startup if it listens on plain HTTP on anything other than loopback.