Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关,其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。
Project Reactor是响应式编程的实现者,之前的文章我写过响应式编程的高并发性能,所以用的人会越来越多,现在来说说如何配置Spring Cloud Gateway,可以直接替代Nginx作为前置的负载均衡器。
下面举例说明如何进行配置:
配置证书信息
在配置文件application.yml中设置证书的基本信息,如下:
server:
ssl:
enabled: true //启用ssl
key-alias: scg //启用证书
key-store-password: scg1234 //证书密码
key-store: classpath:scg-keystore.p12 //证书地址
key-store-type: PKCS12 //证书类型
配置信任所有下游证书
网关路由可以同时支持路由到http和https的后端服务,如果路由到Https的后端,通过以下配置,网关可以设置为信任具有以下配置的所有下游证书:
application.yml.
spring:
cloud:
gateway:
httpclient:
ssl:
useInsecureTrustManager: true
生产环境设置默认证书
生产环境中不适合使用不安全的信任管理。对于生产环境,可以使用以下配置配置一组可信任的已知证书:
application.yml.
spring:
cloud:
gateway:
httpclient:
ssl:
trustedX509Certificates:
- cert1.pem
- cert2.pem
如果Spring Cloud Gateway未配置可信证书,就会使用默认的安全证书(可以使用系统属性javax.net.ssl.trustStore覆盖)。
设置TLS 握手超时时间
网关路由后端时,使用了一个客户端连接池。通过https进行通信时,客户端会启动TLS握手。这次握手会有很多超时,可以配置超时时间
application.yml.
spring:
cloud:
gateway:
httpclient:
ssl:
handshake-timeout-millis: 10000
close-notify-flush-timeout-millis: 3000
close-notify-read-timeout-millis: 0
通过以上几步,网关就可以进行https了,你就可以让它放心的代替nginx了。
你觉得使用SpringCloudGateway进行https访问怎么样啊?感兴趣的可以关注我的公众号(xtech100)。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。