Nginx 反向代理:如何将 https 重定向到 2 个相似的服务器?

Nginx 反向代理:如何将 https 重定向到 2 个相似的服务器?

我需要更新我的 nginx 配置,以将一些重定向添加到 2 个类似的服务器(PABX 服务器)。在内部,它们都可以在https://内部_FQDN/

所以,现在我需要通过反向代理访问它们。

由于服务器具有相同类型的 URL,我必须确定一种方法来确定需要哪个服务器。

首先,我想到了一些类似添加关键字来区分流量的方法,对于第一台服务器,关键字为“server1”,对于第二台服务器,关键字为“server2”。URL 应该是https://ReverseProxy_FQDN/server1或者https://ReverseProxy_FQDN/server2

 location /server1/ {
             proxy_pass  https://$server1_fqdn/;
             proxy_redirect  https://$server1_fqdn/ https://$RPpublic_name/OXE1;
             proxy_set_header        Host $host;
             proxy_set_header        X-Forwarded-Host     $http_host;
             proxy_set_header        X-Real-IP $remote_addr;
             proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
}

但是,它不起作用,我在浏览器的控制台中出现了一些错误:

语法错误:预期表达式,结果为“<”

我还尝试添加“邪恶的如果”:

if ($request_uri ~* "/server1/(.*)") {
         proxy_pass  https://$server1_fqdn/$1;
  }

这次,我可以转到 server1 的登录页面,但有些图片没有加载,它会尝试转到 /assets/theme/img/sprite.svg。关键字“server1”没有出现,因此 RP 无法很好地处理它。(从外部来看,加载这些元素的 url 是https://public_fqdn/assets/theme/img/sprite.svg,RP 无法正确重定向:仅当 URL 包含此关键字“server1”时才重定向。

如果我尝试登录,也会出现同样的错误,使用的 URL 不会包含关键字“server1”。

为了区分两个服务器,我想在 URL 中使用一些关键字来反向代理,这些关键字不应该包含在重定向到服务器的 URL 中。

谢谢

弗雷德

相关内容