首页 文章

负载均衡器和HTTPS请求转发

提问于
浏览
0

我们设置了一个负载均衡器,可以将请求转发给两个apache Web服务器 . 目前我们在负载均衡器端设置了SSL证书,但问题是在负载均衡器之后,请求仍然作为HTTP转发,我们使用该请求为我们的CSS和JS资产生成绝对URL . (用java portlet实现)

因此,当用户通过HTTPS输入时,他仍然通过HTTP拥有绝对链接,因此样式中断 .

基本上我们想要根据请求协议生成链接,但我们总是得到HTTP . 问题是我们对负载均衡器的访问是有限的 . (客户有控制权)

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

1 回答

  • 1

    下面的代码可以帮到你,我们面临同样的问题,我们只是检查请求是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);
    

相关问题