apache - apache代理通下的Gitlab相对URL

标签 apache gitlab proxypass

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

但我已经使用 apache proxy pass 创建以下映射
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 吗?

    最佳答案

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

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

    关于apache - apache代理通下的Gitlab相对URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27236051/

    相关文章:

    nginx - 使用 proxy_pass 配置 Nginx

    ssl - 使用 nginx 代理后面的 docker 私有(private)注册表 (v2) 的格式错误的 HTTP 响应

    apache - 代理 websocket wss ://to ws://apache

    apache - Windows 10 上的 XAMPP 和 Skype 端口冲突

    java - 在Java中验证Http请求的方法?

    apache - 我可以将一些确切的远程 URL 映射到具有不同端口的本地 URL

    git - 将 git 存储库从 GitLab 转移到 GitHub - 我们可以、如何和陷阱(如果有)?

    java - Apache 使用 Java 显示旧错误

    Gitlab:不能只推送到 master

    git - Gitlab中 "Allowed to push"和 "Allowed to merge"的含义