apache代理传递下的Gitlab相对URL

apache代理传递下的Gitlab相对URL,apache,gitlab,proxypass,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-b

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

但我已经使用apache proxy pass创建了以下映射
localhost:8880----->localhost/gitlab

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

  • /assets/favicon-baaa14bade1248aa6165e9d34e7d83c0.ico
  • /资产/应用程序-296ff8a0c87574e522a2911224b5350b.css
  • /资产/打印-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,而不是请求中嵌入的链接和资源。

    谢谢您的回复。但我不喜欢这个答案!whineOld post,但是如果有人像我一样偶然发现它,gitlab的综合发行版不支持相对URL安装:您可以查看
    mod\u proxy\u html
    模块来解决这个问题。具体来说,该指令可以重写所服务HTML页面中的URL,以指向正确的位置。您还可以使用
    mod_proxy
    重写cookie,这可能是修复身份验证令牌所必需的。更好的解决方案可能是在自己的主机上(例如,
    gitlab.localhost
    )而不是在子目录上为gitlab提供服务,这样在代理到后端时只需对流量进行最小的修改。