Kurz erklärt
In Next.js 16 wurde middleware.ts in proxy.ts umbenannt — nur eine der beiden Dateien darf im Projekt existieren, sonst bricht der Build.
Genauer
Läuft wie die frühere Middleware vor dem eigentlichen Rendern/Routing und kann Requests umschreiben, umleiten oder früh mit einer eigenen Antwort abbrechen (z. B. 429 bei Rate-Limit-Überschreitung). Der Matcher (config.matcher) legt fest, für welche Pfade die Funktion überhaupt aufgerufen wird.