Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 负载均衡器和HTTPS请求转发_Apache_Ssl_Https_Load Balancing - Fatal编程技术网

Apache 负载均衡器和HTTPS请求转发

Apache 负载均衡器和HTTPS请求转发,apache,ssl,https,load-balancing,Apache,Ssl,Https,Load Balancing,我们设置了一个负载平衡器,将请求转发到两个apache web服务器。 目前我们在负载平衡器端设置了一个SSL证书,但问题是在负载平衡器之后,请求仍然作为HTTP转发, 我们使用请求生成CSS和JS资产的绝对url。(使用java Portlet实现) 因此,当用户通过HTTPS输入时,他仍然通过HTTP拥有绝对链接,因此样式会中断 基本上,我们希望根据请求协议生成链接,但我们总是得到HTTP。问题是我们对负载平衡器的访问是有限的。(客户拥有控制权) 有人能提出一些解决方案来帮助我们确定请求类型

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

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

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


有人能提出一些解决方案来帮助我们确定请求类型,即使它是使用普通HTTP转发的吗?(从负载平衡器向Apache发送头?

下面的代码将帮助您,我们与您面临相同的问题,我们只是检查请求是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);