【问题标题】:Gitlab relative URL under apache proxy passapache proxy pass下的Gitlab相对URL
【发布时间】:2015-01-29 21:51:08
【问题描述】:

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

但我已经使用 apache 代理传递来创建以下映射
localhost:8880 ------> localhost/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吗?

    【问题讨论】:

    • 您可以查看mod_proxy_html 模块来解决此问题。具体来说,ProxyHTMLURLMap 指令可以重写提供的 HTML 页面中的 URL 以指向正确的位置。您也可以使用 mod_proxy 重写 cookie,这可能是修复身份验证令牌所必需的。更好的解决方案可能是在其自己的主机(例如gitlab.localhost)上提供 gitlab 而不是子目录,以便在代理到后端时需要对流量进行最少的修改。

    标签: apache gitlab proxypass


    【解决方案1】:

    抱歉,gitlab 目前不支持此功能。如果您必须使用相对 url,请考虑使用综合 gitlab,因为它支持相对 url。

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

    【讨论】:

    猜你喜欢
    • 2012-02-18
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 2020-11-10
    相关资源
    最近更新 更多