SLB 支持和http2,后端挂载的nginx 不支持http2,http2 的服务端推送功能还生效[阿里云负载均衡SLB]

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

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
7 条回复 A 作者 M 管理员
  1. 在阿里云的负载均衡(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官方文档。

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

  3. 您好!阿里云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协议的后端服务器,以获得更好的性能和用户体验。

  4. 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 协议的负载均衡方案来实现。

  5. 如果 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 的服务端推送功能。

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

  7. 首先,要使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配合使用。

  8. 【回答】

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

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

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

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