Apache reverse proxy jumps back to insecure protocol after redirect
If sendRedirect uses a relative path, Tomcat will add absolute elements including scheme (http/https) and servername.
Scheme will default to http unless you override it. The servername will come from the host header which you've carefully passed already.
I had the same problem and used a new Tomcat connector (along side the existing one) on a separate port which overrides the scheme and sets the port for good measure:
<Connector port="8443" protocol="HTTP/1.1" URIEncoding="UTF-8"
connectionTimeout="20000"
scheme="https" proxyPort="443"/>
Then in Apache, the SSL virtual host has:
ProxyPass / http://<tomcat_server>:8443/
The plain HTTP virtual host continues to use the existing Connector port (8080)
Alternatively, you could hard code the redirect location when calling sendRedirect() but this is obviously inflexible.