【发布时间】:2015-01-29 21:51:08
【问题描述】:
我在 docker 中运行 gitlab,该 docker 映射到我的本地主机上的端口 8880。所以我可以使用 URL 访问它
http://localhost:8880
但我已经使用 apache 代理传递来创建以下映射
localhost:8880 ------> localhost/gitlab
这样我的用户就可以通过 localhost/gitlab 访问 gitlab。一切似乎都工作正常,但是在呈现页面时出现了问题。 Gitlab 生成的页面中的所有链接都使用相对 url,如
这会导致 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 而不是子目录,以便在代理到后端时需要对流量进行最少的修改。