# nginx reverse-proxy block for levcs-instance. # # Use this if your VPS already runs nginx (e.g. fronting Forgejo) and # you'd rather add a server block than introduce Caddy. Assumes # certbot-style cert paths; adjust for your own ACME setup. # # The instance terminates HTTP only — nginx handles TLS and forwards # plaintext to 127.0.0.1:7117. server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name levcs.example.com; ssl_certificate /etc/letsencrypt/live/levcs.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/levcs.example.com/privkey.pem; # Federation surface and the operational health probe. Anything # else returns 404 — no web UI exists yet, so be explicit. location ~ ^/(levcs/v1|health) { proxy_pass http://127.0.0.1:7117; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # Pack responses can be large on a fresh clone. Long timeouts # keep slow connections from being cut off mid-stream. proxy_read_timeout 5m; proxy_send_timeout 5m; client_max_body_size 1g; # Federation request signing covers the body via BLAKE3, so # nginx must not buffer a request to a temp file and silently # rewrite it — pass through unchanged. proxy_request_buffering off; } location / { return 404; } access_log /var/log/nginx/levcs.access.log; error_log /var/log/nginx/levcs.error.log warn; } # HTTP → HTTPS redirect. Drop this if certbot manages it for you. server { listen 80; listen [::]:80; server_name levcs.example.com; return 301 https://$host$request_uri; }