小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

SpringCloud GateWay 使用 網關路由

 青苔IT 2021-07-19

GateWay之路由轉發(fā)和過濾

在一個Gateway項目(配置了eureka等組件)中進行配置

server:

  port: 9006

spring:

  application:

    name: zhao-service-gateway

  cloud:

    gateway:

      routes:

       - id: service-autodeliver-router

         #uri: http://127.0.0.1:8091

         uri: lb://zhao-service-autodeliver

         predicates:

          - Path= /autodeliver/**

       - id: service-resume-router

         #uri: http://127.0.0.1:8081

         uri: lb://zhao-service-resume

         predicates:

           - Path=/resume/**

         filters:

           - StripPrefix=1

通過第一個服務hao-service-autodeliver的配置形式,使用固定ip和服務名均可正常通過網關項目訪問到服務,但是固定ip的方式不太靈活,而 lb://zhao-service-autodeliver可以實現隨機的負載均衡,且不用填寫固定ip也避免了不要的麻煩
file
第二個服務配置中 filters:- StripPrefix=1這個配置會過濾掉第一個路徑配置,所以我們在最后訪問的時候,除了需要加上第一個過濾掉的配置,還需要加上原本的配置。訪問形式如下
file

GateWay斷言

上述針對路徑的配置即是斷言predicates的配置,而Gateway還內置了以下幾種斷言
file
基本上上述斷言都是基于請求攜帶的信息進行過濾的,在實際操作過程中可以綜合使用這些信息來達到我們想要的操作

GateWay自定義全局過濾器

//fhadmin.cn

@Component

@Slf4j

public class BlackListFilter implements GlobalFilter, Ordered{

    private  static final List<String> blackList=new ArrayList<>();

    static {

        blackList.add("0:0:0:0:0:0:0:1");//模擬本機ip地址

    }

    @Override

    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {

        ServerHttpRequest request = exchange.getRequest();

        ServerHttpResponse response =exchange.getResponse();

        String clientIp = request.getRemoteAddress().getHostString();

        if (blackList.contains(clientIp)){

            response.setStatusCode(HttpStatus.UNAUTHORIZED);

            log.error(clientIp+"在黑名單中,拒絕訪問");

            String data = "request be denied";

            DataBuffer wrap = response.bufferFactory().wrap(data.getBytes());

            return response.writeWith(Mono.just(wrap));

        }

        return chain.filter(exchange);

    }


    @Override

    public int getOrder() {

        return 0;

    }

}

通過該過濾器攔截了黑名單中的請求(該操作在實際中可借助mysql或redis等數據存儲實現),實現效果
file

GateWay的高可用

?關作為?常核?的?個部件,如果掛掉,那么所有請求都可能?法路由處理,因此我們需要做GateWay的?可?。GateWay的?可?很簡單:可以啟動多個GateWay實例來實現?可?,在GateWay的上游使?Nginx等負載均衡設備進?負載轉發(fā)以達到?可?的?的。啟動多個GateWay實例(假如說兩個,?個端?9002,?個端?9003),剩下的就是使?Nginx等完成負載代理即可。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多