GVKun编程网logo

Pound 反向HTTP代理/负载均衡器和SSL封装器(反向代理服务器如何实现负载均衡)

7

本文将为您提供关于Pound反向HTTP代理/负载均衡器和SSL封装器的详细介绍,我们还将为您解释反向代理服务器如何实现负载均衡的相关知识,同时,我们还将为您提供关于asp.netcore中负载均衡场

本文将为您提供关于Pound 反向HTTP代理/负载均衡器和SSL封装器的详细介绍,我们还将为您解释反向代理服务器如何实现负载均衡的相关知识,同时,我们还将为您提供关于asp.net core中负载均衡场景下http重定向https的问题、AWS 负载均衡器将 :80 附加到 http 到 https 301 重定向的 url、AWS应用程序负载均衡器https ssl在目标计算机上的卸载、bboss-http 5.5.2 发布,轻量级 httpproxy 负载均衡器的实用信息。

本文目录一览:

Pound 反向HTTP代理/负载均衡器和SSL封装器(反向代理服务器如何实现负载均衡)

Pound 反向HTTP代理/负载均衡器和SSL封装器(反向代理服务器如何实现负载均衡)

Pound 介绍

Pound 是一个反向 HTTP 代理,负载均衡器和 SSL 封装器。可代理客户端的 HTTPS 请求到 HTTP
的后端服务器,并对这些请求进行分发,支持会话保持,支持 HTTP/1.1。

示例配置:

ListenHTTP
    Address 1.2.3.4
    Port    80

    Service
        HeadRequire "Host: .*www.server0.com.*"

        BackEnd
            Address 192.168.0.10
            Port    80
        End
    End

    Service
        HeadRequire "Host: .*www.server1.com.*"

        BackEnd
            Address 192.168.0.11
            Port    80
        End
    End
End

Pound 官网

http://www.apsis.ch/pound/

asp.net core中负载均衡场景下http重定向https的问题

asp.net core中负载均衡场景下http重定向https的问题

上周欣喜地发现,微软官方终于针对 asp.net core 在使用负载均衡的情况下从 http 强制重定向至 https 的问题提供了解决方法。

app.UseForwardedHeaders(new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedProto
});var options = new RewriteOptions()
    .AddRedirectToHttpsPermanent();
app.UseRewriter(options);

但实际使用之后,欣喜变成了失望 —— 微软对这个问题的认识角度和我们不一样,造成这个方法对我们不适用,不得不继续使用我们的土方法。

为什么会这样?请看下面的分解。 

AddRedirectToHttpsPermanent 早就在 BasicMiddleware 的 RedirectToHttpsRule 中实现了,它的逻辑很简单 —— 判断当前请求是否是https,如果不是就进行重定向。

if (!context.HttpContext.Request.IsHttps)
{    //...}

这个直接了当的判断在使用负载均衡的场景下不仅不会发挥应有的作用,而且会产生致命的副作用 —— 让请求进入重定向死循环(ERR_TOO_MANY_REDIRECTS)。因为不管客户端的请求是 http 还是 https ,负载均衡与后端服务器之间始终是 http(当然你可以用https,但那是吃饱了撑着还浪费粮食)。如果负载均衡不额外提供这个信息,在后端服务器的眼里始终只有 http 没有 https ,http 重定向 https 根本无法实现。

从负载均衡的角度,为了解决这个问题,通常会通过一个另外的专用的请求头抓发这个信息,它的名字叫"X-Forwarded-Proto"。

从 asp.net core 的角度,要解决这个问题,需要弥补 Request.IsHttps 与 X-Forwarded-Proto 之间的鸿沟。于是微软实现了上面的 app.UseForwardedHeaders() ,实际是由 ForwardedHeadersMiddleware 完成这个任务 —— 根据 X-Forwarded-Proto 设置 Scheme(Request.IsHttps 就是基于 Scheme 进行判断的)。

if (checkProto && i < forwardedProto.Length)
{    set.Scheme = forwardedProto[forwardedProto.Length - i - 1];
}

到此为止,微软完美地解决了这个问题,RedirectToHttpsRule 不用修改1行代码。

但是在实际使用时,我们发现一个大问题,大到我们必须弃用这个看似完美的解决方法。

微软解决 http to https 问题的思路是这样:只要请求不是 https 的,就强制跳转到 https(这个没问题),其他一概不管,不管这个请求是不是来自负载均衡转发的(这个不够贴心)。

而我们要解决的问题是:只有在负载均衡转发的原始请求是 http 的情况下,才强制跳转至 https 。比如在服务器本机访问,比如来自其他docker容器的访问,如果这也跳转,那每台服务器(或者docker容器)都要部署https证书,多麻烦。

一个是只要不是 https ,就跳转;一个是只有是转发的 http ,才跳转。 就是因为这个对问题理解的差异,我们不得不放弃采用微软的官方解决方法,继续使用我们不太优雅的土方法。

RedirectToProxiedHttpsRule

public class RedirectToProxiedHttpsRule : RedirectToHttpsRule
{ 
public RedirectToProxiedHttpsRule() {
base.StatusCode = StatusCodes.Status301MovedPermanently;
base.SSLPort = null; }

public override void ApplyRule(RewriteContext context) {
var key = "X-Forwarded-Proto";
var request = context.HttpContext.Request;
if (request.Headers.ContainsKey(key)) {
if (request.Headers[key].FirstOrDefault() == "http") {
base.ApplyRule(context); } } } }


RewriteOptionsExtensions


public static class RewriteOptionsExtensions
{   
public static RewriteOptions AddRedirectForwardedHttpToHttps(this RewriteOptions options) { options.Rules.Add(new RedirectToProxiedHttpsRule());
return options; } }


在 Startup 中使用

var options = new RewriteOptions()
    .AddRedirectForwardedHttpToHttps();
app.UseRewriter(options);

原文地址:http://www.cnblogs.com/dudu/p/7044923.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文分享自微信公众号 - dotNET跨平台(opendotnet)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

AWS 负载均衡器将 :80 附加到 http 到 https 301 重定向的 url

AWS 负载均衡器将 :80 附加到 http 到 https 301 重定向的 url

如何解决AWS 负载均衡器将 :80 附加到 http 到 https 301 重定向的 url?

当我转到我的示例应用程序时:https://example.com/r/123 它按预期工作。

如果我转到 http://example.com/r/123,负载均衡器似乎会将 url 更改为 https://example.com:80/r/123

此页面导致 ERR_SSL_PROTOCOL_ERROR。

是否可以让 AWS 在重定向中不添加端口(:80)?

enter image description here

解决方法

通过将服务器 IP 更改为 0.0.0.0 而不是 nuxt 服务器配置中的默认值 localhost 解决了我的问题。

// nuxt.config.js
server: {
    host: ''0.0.0.0'',},

AWS应用程序负载均衡器https ssl在目标计算机上的卸载

AWS应用程序负载均衡器https ssl在目标计算机上的卸载

如何解决AWS应用程序负载均衡器https ssl在目标计算机上的卸载?

我正在每个az中使用两个Web服务器设置aws应用程序负载平衡器。遵从性要求客户端请求被加密,并且SSL卸载在应用程序服务器而不是应用程序负载平衡器上进行。我有第三方证书输入到ACM。该证书已映射到目标组https中的ALB。该证书具有域名。

我想在服务器上进行SSL卸载/终止。如何使用此证书将应用程序LB和服务器设置为启用https。我需要在IIS服务器和ALB服务器中更改哪些设置。 应用程序负载平衡器是否支持此功能?我看到我们可以在NLB和经典游戏中做到...

为IIS服务器和ALB wud帮助进行配置的任何链接。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

bboss-http 5.5.2 发布,轻量级 httpproxy 负载均衡器

bboss-http 5.5.2 发布,轻量级 httpproxy 负载均衡器

bboss-http,轻量级 http proxy 负载均衡器,简单而功能强大的 http 负载均衡器模块,基于 http 协议实现客户端点到点的负载均衡和集群容灾。

功能特点

  1. 服务负载均衡(目前提供 RoundRobin 负载算法)
  2. 服务健康检查
  3. 服务容灾故障恢复
  4. 服务自动发现(zk,etcd,consul,eureka,db,其他第三方注册中心)
  5. 分组服务管理

       可以配置多组服务集群地址,每一组地址清单支持的配置格式:
           http://ip:port
           https://ip:port
           ip:port(默认http协议)
       多个地址用逗号分隔

  6. 服务安全认证(配置basic账号和口令)

  7.主备路由/异地灾备特色

  • 负载均衡器主备功能,如果主节点全部挂掉,请求转发到可用的备用节点,如果备用节点也挂了,就抛出异常; 如果主节点恢复正常,那么请求重新发往主节点 
  • 异地灾备,服务采用异地灾备模式部署,服务优先调用本地,当本地服务全部挂掉,服务请求转发到异地服务; 如果本地服务部分恢复或者全部恢复,那么请求重新发往本地服务

使用开发文档
bboss http负载均衡器使用指南

关于Pound 反向HTTP代理/负载均衡器和SSL封装器反向代理服务器如何实现负载均衡的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于asp.net core中负载均衡场景下http重定向https的问题、AWS 负载均衡器将 :80 附加到 http 到 https 301 重定向的 url、AWS应用程序负载均衡器https ssl在目标计算机上的卸载、bboss-http 5.5.2 发布,轻量级 httpproxy 负载均衡器的相关知识,请在本站寻找。

本文标签:

上一篇bboss-http 轻量级 http proxy 负载均衡器(负载均衡器软件)

下一篇ZXTM 负载均衡器(负载均衡器配置)