NGINX反向代理不加载资产,泊坞窗网站应用程序上的相对URL

我在Docker容器上的服务器上运行了多个webapps,这些容器映射到自己的端口。 我试图用NGINX来完成反向代理,所以我不必去http://hostname:4012到webapp,而是http://hostname/metrics来到同一个页面。 通常情况下,一个简单的proxy_pass会这样工作:

 location /metrics/ { proxy_pass http://localhost:4012/; } 

这工作的意义,它到了index.html,但不会加载HTML中的任何脚本。 我通过添加一个sub_filter来在html中创build一个基本url,

 location /metrics/ { proxy_pass http://localhost:4012/; sub_filter_once off; sub_filter 'http://localhost:4012/' '$scheme://$host/metrics/'; sub_filter '<head>' '<head>\n<base href="http://hostname:4012/">'; } 

这允许包含在index.html中的主JS文件加载,显示页面,但不完全。 某些图标和字体丢失,通过.css中的相对URL调用。 但更重要的是,我的一个应用程序的一些JS是坏的。我点击我的网页上的button,它什么都不做,抛出这个错误:

ReactErrorUtils.js:51未捕获DOMException:无法在“历史logging”上执行“pushState”:无法创buildURL为“ http://主机名:4012 / report / 81e006c3-949f-4b5d-82b8-ee8c8ba0e337 ”的历史logging状态对象一个源文件“ http://cname.net ”和URL“ http://cname.net/metrics/ ”的文件。

任何想法如何我可以解决这个? 奇怪的是,一个单独的应用程序将完全工作,如果我把它放在nginx的根/位置本身,如下所示:

 location / { proxy_pass http://localhost:4012/; } 

任何想法,我怎么能得到这个与/metrics/位置的工作,所以我可以让我所有的应用程序代理?