global
    log stdout format raw local0
    maxconn 2000
    tune.ssl.default-dh-param 2048

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    timeout connect 5000
    timeout client  50000
    timeout server  50000

frontend http-in
    bind *:80
    bind *:443 ssl crt /usr/local/etc/haproxy/certs/veza.pem
    redirect scheme https code 301 if !{ ssl_fc }

    # ACLs for routing
    acl path_api path_beg /api
    acl path_ws path_beg /ws/chat
    acl path_stream path_beg /hls /stream

    # CORS (Simplified for dev, can be restrictive in prod)
    http-response set-header Access-Control-Allow-Origin "*"
    http-response set-header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization"
    http-response set-header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"

    # Routing logic
    use_backend backend_go if path_api
    use_backend backend_chat if path_ws
    use_backend backend_stream if path_stream

    # Default to Frontend (React)
    default_backend backend_web

backend backend_go
    balance roundrobin
    server api1 veza-backend-api:8080 check

backend backend_chat
    balance roundrobin
    server chat1 veza-chat-server:8081 check

backend backend_stream
    balance roundrobin
    server stream1 veza-stream-server:8082 check

backend backend_web
    balance roundrobin
    server web1 veza-frontend:80 check
