gpt4 book ai didi

apache - 负载均衡器和 HTTPS 请求转发

转载 作者:太空宇宙 更新时间:2023-11-03 14:15:53 24 4
gpt4 key购买 nike

我们设置了一个负载平衡器,将请求转发到两个 apache 网络服务器。目前我们在负载均衡器端设置了一个 SSL 证书,但问题是在负载均衡器之后请求仍然作为 HTTP 转发,我们使用请求为我们的 CSS 和 JS Assets 生成绝对 url。 (用 java portlets 实现)

因此,当用户通过 HTTPS 进入时,他仍然具有通过 HTTP 的绝对链接,因此样式会中断。

基本上我们想根据请求协议(protocol)生成链接,但我们总是在我们这边获取 HTTP。问题是我们对负载均衡器的访问是有限的。 (客户端有控制权)

任何人都可以提出某种解决方案来帮助我们确定请求类型,即使它是使用纯 HTTP 转发的也是如此? (从负载均衡器向 Apache 发送 header ?)

最佳答案

下面的代码会对你有帮助,我们也面临着同样的问题,我们只是检查请求是http还是https,然后使用不同的配置。

var protocol = (HtmlPage.Window.GetProperty("location") as ScriptObject).GetProperty("protocol").ToString().Replace(":", String.Empty);

// root path will have the value like: https://am1stg-i.serviceportal.hp.com/gsda/home/
var rootPath = HtmlPage.Window.GetProperty("rootPath").ToString();

//var configuration = protocol == "http" ? "teamcollaborationBinding_TeamCollaborationService" : "teamcollaborationBinding_TeamCollaborationServiceHttps";

var isHttps = string.Equals("https", protocol, StringComparison.InvariantCultureIgnoreCase);

var address = new EndpointAddress(rootPath + "TeamCollaborationService.svc");

//serviceClient = new TeamCollaborationServiceClient("teamcollaborationBinding_TeamCollaborationService", address);
//serviceClient = new TeamCollaborationServiceClient();

serviceClient = new TeamCollaborationServiceClient(isHttps ? "teamcollaborationBinding_TeamCollaborationService" : "teamcollaborationBinding_TeamCollaborationService_http", address);

关于apache - 负载均衡器和 HTTPS 请求转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20175984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com