apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: scrum-manager-ingress annotations: kubernetes.io/ingress.class: nginx # No rewrite-target here — the old global rewrite-target: / was # rewriting every path (including /api/tasks) to just /, breaking the API. nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" nginx.ingress.kubernetes.io/proxy-send-timeout: "3600" spec: rules: - host: scrum.local http: paths: # Socket.io long-polling and WebSocket connections go directly to backend. - path: /socket.io pathType: Prefix backend: service: name: backend port: number: 3001 # All other traffic (including /api/) goes to frontend nginx, # which proxies /api/ to backend internally. This avoids double-routing. - path: / pathType: Prefix backend: service: name: frontend port: number: 80