Hetzner. I’ve been using both, Hetzner has leaps and bounds better support and no-bullshit approach to customers.
You can find some cheap-ish options on their Server Auction but keep in mind that you should expect the disks to fail sooner than in a new machine. I found that not to be a big issue — use RAID1 and ask them to replace any failing drive, and eventually you get a cheap server with fresh new drives, without any data loss.
HAproxy cannot serve static files directly. You need a webserver behind it for that.
Apache is slow.
Nginx is both a capable, fast reverse-proxy, and a capable, fast webserver. It can do everything HAproxy does, and what Apache does, and more.
I am not saying it is absolutely best for every use-case, but this flexibility is a large part of why I use it in my infra (nad have been using it for a decade).