Você não precisa desistir de tudo, você poderia apenas usar o nginx na frente do haproxy para suporte SSL, mantendo toda a sua configuração de balanceamento de carga. Você nem precisa usar o nginx para HTTP se não quiser. O Nginx pode passar o X-Forwarded-For e um cabeçalho customizado indicando que o SSL está em uso (e as informações do certificado do cliente, se desejar). Snippet de configuração Nginx que envia as informações necessárias:
proxy_set_header SCHEME $scheme; # http/https
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header CLIENT_CERT $ssl_client_raw_cert;