tongchenkeji 发表于:2023-6-9 16:09:490次点击 已关注取消关注 关注 私信 SLB 支持和http2,后端挂载的nginx 不支持http2,http2 的服务端推送功能还生效[阿里云负载均衡SLB] 暂停朗读为您朗读 SLB 支持和http2,后端挂载的nginx 不支持http2,http2 的服务端推送功能还生效么 「点点赞赏,手留余香」 赞赏 还没有人赞赏,快来当第一个赞赏的人吧! 海报 负载均衡SLB# nginx131# 应用服务中间件191# 负载均衡495
叶秋学长AM 2023-11-27 9:45:20 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官方文档。
wljslmzAM 2023-11-27 9:45:20 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协议的后端服务器,以获得更好的性能和用户体验。
安然ARAM 2023-11-27 9:45:21 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 协议的负载均衡方案来实现。
vohelonAM 2023-11-27 9:45:21 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 的服务端推送功能就不会生效。 要使服务端推送功能生效,需要满足以下两个条件: 客户端请求必须使用 HTTP/2 协议。 后端服务器必须支持 HTTP/2 协议。 因此,如果您希望启用 HTTP/2 的服务端推送功能,建议您使用后端服务器直接支持 HTTP/2 协议,或使用支持将 HTTP/2 协议转换为 HTTP/1.1 协议的中间件(如 Envoy),这样就可以实现 HTTP/2 的服务端推送功能。
三掌柜666AM 2023-11-27 9:45:21 6 楼主你好,没错,SLB支持http2并可以将流量路由到后端挂载的nginx中,当后端挂载的nginx不支持http2的时候,SLB作为负载均衡器,仍然可以通过http2与客户端通信,并在与客户端之间传输http2请求和响应。
皮牙子抓饭AM 2023-11-27 9:45:21 7 首先,要使HTTP/2的服务端推送功能正常工作,需要确保以下几个条件: 服务器支持HTTP/2:您已经提到SLB支持HTTP/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配合使用。
Carl_奕然AM 2023-11-27 9:45:21 8 【回答】 是的,SLB 支持 HTTP/2 并可以将流量路由到后端的 nginx 实例。 如果后端的 nginx 实例不支持 HTTP/2,则无法使用服务端推送功能。 但是,如果你的应用程序在 LB 和后端 nginx 实例之间使用 HTTP/1.1 协议通信,则可以使用服务端推送功能。 在这种情况下,SLB 会将流量发送到后端 nginx 实例,并且会将来自多个客户端的请求合并到一个请求中发送到后端。
在阿里云的负载均衡(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官方文档。
SLB 支持http2,后端挂载的nginx 不支持http2,但是 http2 的服务端推送功能仍然生效。
您好!阿里云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协议的后端服务器,以获得更好的性能和用户体验。
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 协议的负载均衡方案来实现。
如果 SLB 支持 HTTP/2,并且您的后端服务器挂载了不支持 HTTP/2 的 Nginx,那么如果客户端请求使用 HTTP/2 协议,SLB 会将这个请求转发到 Nginx 服务器,但是 Nginx 服务器无法理解 HTTP/2 协议,因此会将这个请求转化为 HTTP/1.1 协议,并将其传递回给 SLB。
这样,虽然客户端请求使用了 HTTP/2 协议,但因为请求和响应都被转换为了 HTTP/1.1,所以 HTTP/2 的服务端推送功能就不会生效。
要使服务端推送功能生效,需要满足以下两个条件:
因此,如果您希望启用 HTTP/2 的服务端推送功能,建议您使用后端服务器直接支持 HTTP/2 协议,或使用支持将 HTTP/2 协议转换为 HTTP/1.1 协议的中间件(如 Envoy),这样就可以实现 HTTP/2 的服务端推送功能。
楼主你好,没错,SLB支持http2并可以将流量路由到后端挂载的nginx中,当后端挂载的nginx不支持http2的时候,SLB作为负载均衡器,仍然可以通过http2与客户端通信,并在与客户端之间传输http2请求和响应。
首先,要使HTTP/2的服务端推送功能正常工作,需要确保以下几个条件:
服务器支持HTTP/2:您已经提到SLB支持HTTP/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配合使用。
【回答】
是的,SLB 支持 HTTP/2 并可以将流量路由到后端的 nginx 实例。
如果后端的 nginx 实例不支持 HTTP/2,则无法使用服务端推送功能。
但是,如果你的应用程序在 LB 和后端 nginx 实例之间使用 HTTP/1.1 协议通信,则可以使用服务端推送功能。
在这种情况下,SLB 会将流量发送到后端 nginx 实例,并且会将来自多个客户端的请求合并到一个请求中发送到后端。