将反向代理HTTP标头注入Express.js应用程序

时间:2014-11-25 17:35:16

标签: apache express http-headers relative-path reverse-proxy

我的Express.js应用程序使用绝对路径(例如,/bootstrap/css/bootstrap.css等)当我在Apache中反向代理时,在域根,它工作正常。但是,如果我在任何不同的路径上进行RP操作,应用程序的路径就无法解决。例如,如果我在/app处设置RP,那么该应用将尝试获取/bootstrap/css/bootstrap.css,而应该获取/app/bootstrap/css/bootstrap.css等等。

作为解决此问题的尝试,我的Apache配置将X-Script-Name标题设置为/app

Header add "X-Script-Name" /app

我希望然后将其注入到前端代码中,因为它由Express提供服务。例如,而不是:

<script src='/assets/something.js'></script>

......我们会有类似的东西:

<script src='${X-Script-Name}/assets/something.js'></script>

我遇到的问题是在Express中获得X-Script-Name值。我原以为它会在路由器的req.headers中,但这只是Express推送的标题......我怎样才能让它工作?

1 个答案:

答案 0 :(得分:1)

使用普通Header将设置响应标头。

您需要添加请求标头,以便下游应用可以访问它,因此您需要使用RequestHeader指令,如下所示:

RequestHeader set X-Script-Name "/app"