Spring Cloud ReactiveLoadBalancerClientFilter

2024-01-05 17:37 更新

ReactiveLoadBalancerClientFilter在交換屬性ServerWebExchangeUtils.GATEWAY_REQUEST_URL_ATTR中尋找URI。如果該網(wǎng)址具有lb方案(即lb://myservice),它將使用Spring Cloud ReactorLoadBalancer將名稱(上例中為myservice)解析為實(shí)際的主機(jī)和端口并替換相同屬性中的URI。 未經(jīng)修改的原始URL會(huì)附加到ServerWebExchangeUtils.GATEWAY_ORIGINAL_REQUEST_URL_ATTR屬性中的列表中。過濾器還將查看ServerWebExchangeUtils.GATEWAY_SCHEME_PREFIX_ATTR屬性,以查看其是否等于lb,然后應(yīng)用相同的規(guī)則。

application.yml。 

spring:
  cloud:
    gateway:
      routes:
      - id: myRoute
        uri: lb://service
        predicates:
        - Path=/service/**
默認(rèn)情況下,當(dāng)ReactorLoadBalancer無法找到服務(wù)實(shí)例時(shí),將返回503。您可以通過設(shè)置spring.cloud.gateway.loadbalancer.use404=true將網(wǎng)關(guān)配置為返回404。
ReactiveLoadBalancerClientFilter返回的ServiceInstanceisSecure值將覆蓋對(duì)網(wǎng)關(guān)的請(qǐng)求中指定的方案。例如,如果請(qǐng)求通過HTTPS進(jìn)入網(wǎng)關(guān),但ServiceInstance表示它不安全,則下游請(qǐng)求將通過HTTP發(fā)出。 相反的情況也可以適用。但是,如果在網(wǎng)關(guān)配置中為路由指定了GATEWAY_SCHEME_PREFIX_ATTR,則前綴將被刪除,并且從路由URL生成的方案將覆蓋ServiceInstance配置。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)