Você está correto - o lighttpd não suporta solicitações POST com um corpo de mensagem vazio sem um cabeçalho 'Content-Length' definido como zero, e o CURL envia tal solicitação. Há discussões sobre quem está certo, mas na minha opinião, o lighttpd está quebrado. Um POST sem Content-Length e sem Codificação de Transferência é perfeitamente legal e não possui corpo de mensagem.
Adicionar -d ""
faz com que o CURL envie um cabeçalho Content-Length: 0
, o que resolve o problema.
Você pode modificar o lighttp. Encontre o código que emite o erro 411 e defina o comprimento do conteúdo para zero.