开发者社区 > 飞天洛神云网络 > 负载均衡 > 正文

SLB 支持和http2,后端挂载的nginx 不支持http2,http2 的服务端推送功能还生效

SLB 支持和http2,后端挂载的nginx 不支持http2,http2 的服务端推送功能还生效么

展开
收起
游客bcsmywir2bet2 2023-06-09 16:09:49 443 0
8 条回答
写回答
取消 提交回答
  • 全栈JAVA领域创作者

    在阿里云的负载均衡(SLB)中,如果您使用的是HTTP/2协议,而后端应用程序不支持HTTP/2协议,则SLB的服务端推送功能将不生效。
    服务端推送是HTTP/2协议的一项特性,可以使服务器在客户端请求之前主动发送数据,从而提高传输效率。如果您的后端应用程序不支持HTTP/2协议,则无法使用服务端推送功能。
    如果您希望在不支持HTTP/2协议的后端应用程序上使用服务端推送功能,可以考虑使用阿里云的Nginx反向代理服务器。Nginx反向代理服务器支持HTTP/2协议,并且可以通过配置来支持服务端推送功能。
    需要注意的是,使用Nginx反向代理服务器需要对Nginx的配置进行一些调整,具体来说,需要在Nginx的配置文件中添加以下配置:

    server {
    listen 443 ssl;
    server_name example.com; ssl_certificate /etc/nginx/certs/example.com.crt;
    ssl_certificate_key /etc/nginx/certs/example.com.key;
    使用HTTP/2协议
    http2;
    开启服务端推送功能
    push "stream";
    }
    需要注意的是,使用Nginx反向代理服务器需要对Nginx的配置进行一些调整,具体来说,需要在Nginx的配置文件中添加以下配置:

    server {
    listen 443 ssl;
    server_name example.com; ssl_certificate /etc/nginx/certs/example.com.crt;
    ssl_certificate_key /etc/nginx/certs/example.com.key;
    使用HTTP/2协议
    http2;
    开启服务端推送功能
    push "stream";
    }
    如果您需要进一步了解如何使用Nginx反向代理服务器支持服务端推送功能,可以参考Nginx官方文档。

    2023-07-08 15:36:45
    赞同 展开评论 打赏
  • 前端开发工程师,csdn 前端领域新星创作者,2023 csdn新星计划 Node赛道 Top1

    SLB 支持http2,后端挂载的nginx 不支持http2,但是 http2 的服务端推送功能仍然生效。

    2023-06-21 18:03:14
    赞同 展开评论 打赏
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    您好!阿里云SLB支持HTTP/2协议,而且HTTP/2协议的服务端推送功能也是生效的。

    即使您的后端服务器挂载的是不支持HTTP/2协议的Nginx,只要您在阿里云SLB上开启了HTTP/2协议,SLB会自动将客户端的HTTP/2请求转换为HTTP/1.1请求并转发给后端服务器。在这种情况下,服务端推送功能仍然可以正常使用。

    如果您的后端服务器不支持HTTP/2协议,那么客户端和SLB之间的连接会使用HTTP/2协议,而SLB和后端服务器之间的连接会使用HTTP/1.1协议。这样可能会影响一些性能指标,例如响应时间和带宽使用率等。因此,建议您尽可能使用支持HTTP/2协议的后端服务器,以获得更好的性能和用户体验。

    2023-06-09 18:41:08
    赞同 展开评论 打赏
  • SLB 支持 HTTP/2 协议,如果您的后端挂载的 Nginx 不支持 HTTP/2 协议,那么服务端推送功能将会失效。

    当 SLB 以 HTTP/2 协议转发请求到后端时,如果后端服务器不支持 HTTP/2,SLB 将会自动转换请求为 HTTP/1.1 协议,并将响应头中的 HTTP2-Hint 字段中携带的服务端推送信息去掉。因此,即使您在 Nginx 中配置了服务端推送,但仅当客户端直接连接 Nginx 并通过 HTTP/2 协议访问时才会生效,在经过 SLB 转发时就会被去掉,无法传递给客户端。

    所以,如果您需要使用服务端推送功能,建议您将后端升级为支持 HTTP/2 的版本,或者使用其他支持 HTTP/2 协议的负载均衡方案来实现。

    2023-06-09 18:30:11
    赞同 展开评论 打赏
  • 如果 SLB 支持 HTTP/2,并且您的后端服务器挂载了不支持 HTTP/2 的 Nginx,那么如果客户端请求使用 HTTP/2 协议,SLB 会将这个请求转发到 Nginx 服务器,但是 Nginx 服务器无法理解 HTTP/2 协议,因此会将这个请求转化为 HTTP/1.1 协议,并将其传递回给 SLB。

    这样,虽然客户端请求使用了 HTTP/2 协议,但因为请求和响应都被转换为了 HTTP/1.1,所以 HTTP/2 的服务端推送功能就不会生效。

    要使服务端推送功能生效,需要满足以下两个条件:

    1. 客户端请求必须使用 HTTP/2 协议。
    2. 后端服务器必须支持 HTTP/2 协议。

    因此,如果您希望启用 HTTP/2 的服务端推送功能,建议您使用后端服务器直接支持 HTTP/2 协议,或使用支持将 HTTP/2 协议转换为 HTTP/1.1 协议的中间件(如 Envoy),这样就可以实现 HTTP/2 的服务端推送功能。

    2023-06-09 17:48:20
    赞同 1 展开评论 打赏
  • 十分耕耘,一定会有一分收获!

    楼主你好,没错,SLB支持http2并可以将流量路由到后端挂载的nginx中,当后端挂载的nginx不支持http2的时候,SLB作为负载均衡器,仍然可以通过http2与客户端通信,并在与客户端之间传输http2请求和响应。

    2023-06-09 17:14:18
    赞同 展开评论 打赏
  • 首先,要使HTTP/2的服务端推送功能正常工作,需要确保以下几个条件:

    1. 服务器支持HTTP/2:您已经提到SLB支持HTTP/2,这是一个好的开始。

    2. 支持ALPN(应用层协议协商):ALPN是一种协议扩展,用于在TLS握手过程中选择使用的应用层协议(例如HTTP/1.1或HTTP/2)。确保您的服务器(包括nginx)启用了ALPN支持。

    如果您的nginx服务器不支持HTTP/2,您将无法直接从nginx服务器上获得HTTP/2的服务端推送功能。在这种情况下,SLB作为负载均衡器,仍然可以通过HTTP/2与客户端通信,并在与客户端之间传输HTTP/2请求和响应。

    服务端推送功能是HTTP/2的一项高级功能,它允许服务器在响应客户端请求时主动推送额外的资源。但由于您的nginx服务器不支持HTTP/2,它无法在与SLB之间的通信中使用HTTP/2的服务端推送功能。

    如果您想使用HTTP/2的服务端推送功能,您可以考虑将后端服务器更换为支持HTTP/2的选项,或者使用其他支持HTTP/2的代理服务器。这样,您可以利用HTTP/2的服务端推送功能,并与SLB配合使用。

    2023-06-09 16:42:36
    赞同 展开评论 打赏
  • CSDN博客专家,51CTO博主专家,多知名企业认证讲师&签约作者&培训讲师,特邀作者等,华为云专家,资深测试开发专家,金牌面试官,职场面试培训及规划师。

    【回答】

    是的,SLB 支持 HTTP/2 并可以将流量路由到后端的 nginx 实例。

    如果后端的 nginx 实例不支持 HTTP/2,则无法使用服务端推送功能。

    但是,如果你的应用程序在 LB 和后端 nginx 实例之间使用 HTTP/1.1 协议通信,则可以使用服务端推送功能。

    在这种情况下,SLB 会将流量发送到后端 nginx 实例,并且会将来自多个客户端的请求合并到一个请求中发送到后端。

    2023-06-09 16:37:54
    赞同 展开评论 打赏
滑动查看更多

阿里云负载均衡(Server Load Balancer,简称SLB)是云原生时代应用高可用的基本要素。通过将流量分发到不同的后端服务来扩展应用系统的服务吞吐能力,消除单点故障并提升应用系统的可用性。 阿里云SLB包含面向4层的网络型负载均衡NLB、面向7层的应用型负载均衡ALB和传统型负载均衡CLB,是阿里云官方云原生网关。

相关产品

  • 负载均衡
  • 热门讨论

    热门文章

    相关电子书

    更多
    阿里巴巴HTTP 2.0实践及无线通信协议的演进之路 立即下载
    CentOS Nginx PHP JAVA 多语言镜像使用手 立即下载
    CentOS Nginx PHP JAVA多语言镜像使用手册 立即下载