I was facing the same issue, thank you for posting all this info :)
The reason why you can't get any app/site to handle the request (even the "default") site is because every site's nginx configuration only listens to requests made to the public IP address of the ES2 instance, while the ELB documentation mentions that the health check requests are made to the private IP like so:
curl –I private-IP-address-of-the-instance:port/health-check-target-page
Docs: https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/ts-elb-healthcheck.html
So, all sites answer to the public IP, while the ELB is only making requests to the private IP, which leaves you with the option to modify the 000-catch-all file and return that 'OK' for the /health URL. As a side effect it will also respond with success on '/' because of the re-enabled "Welcome to nginx!" page due to the removed "return 444;".
I ended up doing the same thing as you, and also locking down all traffic to the application EC2 instances so they're only accessible from the load balancer. I had a 3rd party consultant help with any advice but they didn't have any other ideas. I hope this helps!