如何把一个web集群由HTTP转换为HTTPS

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何把一个web集群由HTTP转换为HTTPS相关的知识,希望对你有一定的参考价值。

如果你的应用使用SSL证书,则需要决定如何在负载均衡器上使用它们。

单服务器的简单配置通常是考虑客户端SSL连接如何被接收请求的服务器解码。由于负载均衡器处在客户端和更多服务器之间,SSL连接解码就成了需要关注的焦点。

2、有两种主要的策略

第一种是我们选择的模式,在haproxy这里设定SSL,这样我们可以继续使用七层负载均衡。SSL连接终止在负载均衡器haproxy ----->解码SSL连接并发送非加密连接到后端应用tomcat,这意味着负载均衡器负责解码SSL连接,这与SSL穿透相反,它是直接向代理服务器发送SSL连接的。

第二种使用SSL穿透,SSL连接在每个tomcat服务器终止,将CPU负载都分散到tomcat服务器。然而,这样做会让你失去增加或修改HTTP报头的能力,因为连接只是简单地从负载均衡器路由到tomcat服务器,这意味着应用服务器会失去获取 X-Forwarded-* 报头的能力,这个报头包含了客户端IP地址、端口和使用的协议。

有两种策略的组合做法,那就是第三种,SSL连接在负载均衡器处终止,按需求调整,然后作为新的SSL连接代理到后台服务器。这可能会提供最大的安全性和发送客户端信息的能力。这样做的代价是更多的CPU能耗和稍复杂一点的配置。

选择哪个策略取决于你及应用的需求。SSL终端为我所见过最典型的策略,但SSL穿透可能会更安全。

3、使用HAProxy作为SSL终端

首先,我们将介绍最典型的解决方案 - SSL 终端。正如前面提到的,我们需要让负载均衡器处理SSL连接。这就意味着要将SSL证书放在负载均衡服务器上。

记住,在生产环境里使用(而不是自签名)的SSL证书,是不会需要你自己来生成或签名 - 你只需要创建证书签名请求 (csr) 并把它交给那个你向它购买证书的机构即可。

首先, 我们创建一份自签名的证书作为示范,并在本地使用同一份证书。

openssl genrsa -out /etc/haproxy/wzlinux.key 2048
openssl req -new -key /etc/haproxy/wzlinux.key -out /etc/haproxy/wzlinux.csr

> Country Name (2 letter code) [AU]:CN
> State or Province Name (full name) [Some-State]:Shanghai
> Locality Name (eg, city) []:Shanghai
> Organization Name (eg, company) [Internet Widgits Pty Ltd]:wzlinux
> Organizational Unit Name (eg, section) []:
参考技术A 重新申请一个域名

如何在asp.net web api中将图像路径转换为http url?

【中文标题】如何在asp.net web api中将图像路径转换为http url?【英文标题】:How to convert image path to http url in asp.net web api? 【发布时间】:2021-08-01 12:49:24 【问题描述】:

我的主域是http://172.27.88.111。我有一个图像文件的相对路径,例如 Media/myimg.jpg

我需要借助 asp.net 中的 REST API 将此路径转换为完整的 URL。

我想要 POSTMAN 中图像路径的输出类似于

http://172.17.88.111/Media/myimg.jpg

【问题讨论】:

【参考方案1】:

使用 LINQPad 脚本作为示例,这里有 3 个示例 - 但使用 'Uri' 类通常是最好的倡导方式:

void Main()

    var baseUrlStr = @"http://172.27.88.111";
    var relUrlStr = @"/Media/myimg.jpg";

    // # 1
    var baseUri = new Uri(baseUrlStr);
    var relUri = new Uri(relUrlStr, UriKind.Relative);

    var absUri = new Uri(baseUri, relUri);

    Console.WriteLine(absUri);

    // # 2
    Console.WriteLine($"baseUrlStrrelUrlStr");

    // # 3
    Console.WriteLine(baseUrlStr + relUrlStr);


这应该给出以下输出:

http://172.27.88.111/Media/myimg.jpg 
http://172.27.88.111/Media/myimg.jpg
http://172.27.88.111/Media/myimg.jpg

【讨论】:

以上是关于如何把一个web集群由HTTP转换为HTTPS的主要内容,如果未能解决你的问题,请参考以下文章

如何把一个web集群由HTTP转换为HTTPS

如何实现@ResponseBody,把Json字符串转换为指定类型

如何在asp.net web api中将图像路径转换为http url?

如何把物理路径转换成虚拟路径

Storm 集群

每秒处理3百万请求的Web集群搭建-如何生成每秒百万级别的 HTTP 请求?