Hi, I am using V3.5.1 and N8N stable, I am able to upload small files in the N8N form trigger, but it will time out with large files (650mb wav file). Always times out in 60 seconds. I have added timeouts here, but its not working, what am I doing wrong?
dynamic/dynamic_conf.yml
http:
routers:
# Router for the n8n main UI
n8n-ui:
rule: "Host(n8n.domain.com
)"
entryPoints:
- "websecure"
service: "n8n-lb"
middlewares:
- "n8n-auth@file"
- "n8n-cors@file"
#- "n8n-buffering@file"
tls:
certResolver: "mytlschallenge"
# Router for the public webhook endpoint
n8n-webhook-router:
rule: "Host(`n8n.domain.com`) && PathPrefix(`/webhook`)"
entryPoints:
- "websecure"
service: "n8n-lb"
middlewares:
- "n8n-cors@file"
#- "n8n-buffering@file"
tls:
certResolver: "mytlschallenge"
services:
n8n-lb:
loadBalancer:
servers:
- url: "http://n8n-web:5678"
passHostHeader: true
serversTransport: "n8n-transport@file"
serversTransports:
n8n-transport:
forwardingTimeouts:
dialTimeout: "30s"
idleConnTimeout: "600s"
responseHeaderTimeout: "600s"
middlewares:
n8n-auth:
basicAuth:
users:
- "some:stuff"
n8n-cors:
headers:
accessControlAllowMethods:
- "GET"
- "POST"
- "PUT"
- "DELETE"
- "OPTIONS"
- "PATCH"
accessControlAllowHeaders:
- "Content-Type"
- "Authorization"
- "X-Requested-With"
- "Accept"
- "Origin"
- "X-N8N-API-KEY"
accessControlAllowOriginList:
- "https://n8n.domain.com"
- "https://domain.com"
- "http://localhost"
- "https://localhost"
accessControlMaxAge: 100
addVaryHeader: true
n8n-buffering:
buffering:
maxRequestBodyBytes: 5368709120
memRequestBodyBytes: 1073741824
retryExpression: "IsNetworkError() && Attempts() <= 2"
entryPoints:
websecure:
address: ":443"
transport:
respondingTimeouts:
readTimeout: "600s"
writeTimeout: "600s"
idleTimeout: "600s"
Error logs:
2025-09-12T22:44:29Z DBG github.com/traefik/traefik/v3/pkg/proxy/httputil/proxy.go:121 > 502 Bad Gateway error="readfrom tcp 172.18.0.2:36248->172.18.0.6:5678: i/o timeout"
49.148.134.55 - usereng [12/Sep/2025:22:43:29 +0000] "POST /form/a1e9420b-d58f-4eb0-a2fc-f958371fb654 HTTP/2.0" 502 11 "-" "-" 121 "n8n-ui@file" "http://n8n-web:5678" 60000ms
docker-compose.yml
services:
traefik:
image: "traefik"
container_name: n8n-traefik
restart: always
command:
- "--api=true"
#- "--api.insecure=true" # Optional, use only during testing
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
- "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}"
- "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"
- "--providers.file.directory=/etc/traefik/dynamic"
- "--providers.file.watch=true"
# --- ADD/MODIFY THESE LOGGING LINES ---
- "--log.level=DEBUG" # Set log level to DEBUG for maximum verbosity
- "--accesslog=true" # Enable access logs to see incoming HTTP requests
- "--accesslog.filepath=/dev/stdout" # Direct access logs to stdout (for docker logs)
# --- END LOGGING LINES ---
ports:
- "80:80"
- "443:443"
volumes:
- traefik_data:/letsencrypt
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./dynamic:/etc/traefik/dynamic:ro
environment:
- N8N_BASIC_AUTH_USER_ENV=${N8N_BASIC_AUTH_USER}
- N8N_BASIC_AUTH_PASSWORD_HASH_ENV=${N8N_BASIC_AUTH_PASSWORD_HASH}
- SUBDOMAIN=${SUBDOMAIN}
- DOMAIN_NAME=${DOMAIN_NAME}
networks:
- traefik_network