Nginx:将网站上的链接重写到不同的域名

Nginx:将网站上的链接重写到不同的域名

背景:我们正在运行一个 Gitlab 实例,它可以通过两个不同的域从两个不同的网络访问(这是网络结构要求的,无法更改)。Gitlab 仅支持 1 个域。过去它开箱即用,但在最新更新中,即使来自第二个域,存储库中文件的链接也会设置为主域。因此,我们能够完美地通过第二个域浏览 Gitlab UI。但当我们单击存储库中的文件时,域会从第二个域更改为主域(无法从第二个网络访问),因为文件的链接是带有主域的绝对 URL。这意味着,我们无法从第二个域在 Gitlab Web UI 中打开文件。问题只是,这些是带有错误域的绝对链接。通过手动更改域,我们仍然可以显示文件。

Gitlab 支持表示,Gitlab 本身不支持此功能,但应该可以配置 Nginx(Gitlab 使用)以根据请求域重写 URL。我在网上搜索时找不到相应的结果(仅关于重写请求的 URL,而不是网站上的链接)。

为了进一步描述问题的结构,请看这张图:

Gitlab 在网络中的部署结构

单个 Gitlab 服务器可通过 2 个单独的负载均衡器(它们在此充当路由器,因为它们仅指向该一台服务器)访问。它们可在自己的域(maindomain.comseconddomain.com)下访问,并且只能通过自己的网络访问。Gitlab 实例是为maindomain.com域配置的,不能直接为第二个域配置。当尝试在通过第二个网络和连接时在 Web UI 中打开文件时,就会出现上述问题seconddomain.com。所有这些都嵌入到组织网络中,无法从互联网访问。

总结:是否可以让 Nginx 根据网站的请求 URL 重写所服务网站上的链接中的绝对 URL?如果可以,该怎么做?

相关内容