The issue is most likely that you're not proxying enough of the requests. Why not simplify your proxy and add a base_path to Kibana so that all of Kibana is accessible via simple URL to your proxy (e.g., /kibana)?
Then, from Kibana's config/kibana.yml, you can add the proxy base path setting:
server.basePath: /kibana
Using both will prepend and require /kibana for access to Kibana, but it means that it can be tunneled through your proxy without issue, while still allowing you to route other requests. There are a lot of background APIs that both Marvel and Kibana will call that don't go through the endpoints that you have routed above. As a result, you are going to have to constantly play wackamole to keep up with any changes in order for your existing approach to proxying to work.
Personally, I don't think it's a good idea to join Elasticsearch and Kibana within the same proxy: it's absolutely going to make your proxy more difficult to configure and realistic deployments of Kibana and Elasticsearch should not be on the same box.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.