apache代理传递下的Gitlab相对URL

时间:2014-12-01 19:47:18

标签: apache gitlab proxypass

我在一个docker中运行gitlab,它映射到我的localhost上的端口8880。所以我可以使用URL访问它
http:// localhost:8880

但我已经使用apache代理传递来创建以下映射    
localhost:8880 ------>本地主机/ gitlab

这样我的用户就可以通过 localhost / gitlab 访问gitlab。一切似乎都运行正常但是在呈现页面时会出现问题。 Gitlab生成的页面中的所有链接都使用相对URL

  • /assets/favicon-baaa14bade1248aa6165e9d34e7d83c0.ico
  • /assets/application-296ff8a0c87574e522a2911224b5350b.css
  • /assets/print-1df3ea9b8ff148a6745321899e0cb213.css
  • 这会导致apache在单击时将它们重定向到 localhost / assets /...。这导致404错误,这是明显的,因为资源路径不正确。该链接应该已生成为 localhost / gitlab / assets /....,以便apache可以正确映射到 localhost / gitlab / assets /...

    我尝试过使用Apache重写模块,Nginx重写模块,但没有一个能够工作。无论如何我可以更改gitlab生成的相对URL吗?

    1 个答案:

    答案 0 :(得分:0)

    抱歉,gitlab目前不支持此功能。如果你必须使用相对网址,请考虑使用omnibus gitlab,因为它支持相对网址。

    当您向localhost / gitlab发送请求时,apache服务器会忠实地将其转发给localhost:8880。但gitlab和nginx都不知道它来自相对网址,只有apache才能。这成为一个问题,因为gitlab中的资源路径是使用fqdn - localhost:8880构造的。并且apache只修改对localhost / gitlab的请求的头部而不是请求中嵌入的链接和资源。