503 Service Unavailable | The plain HTTP request was sent to HTTPS port

The redirect doesn’t work in TCP mode, and the backend is HTTPS, so it doesn’t work this way.

This should be the correct configuration (also you don’t need a backend, since you just redirect to https):

frontend port80-redirect
 mode http
 bind 192.168.10.5:80 
 redirect scheme https

Correct, you cannot look at the HTTP headers (inlucding hostname and URI).

What is your requirement exactly - do you need a different backend based on URI, or just hostname?
How do your certificates look like if you have multiple hostnames? Do you have multiple certificates or one certificate with multiple SANs?