APIGateway网关安全设计

本文探讨了API Gateway的安全设计,包括路由、反向代理、黑白名单及授权安全。提到了Zuul作为Spring Cloud的组件,与Nginx在功能上的区别,强调Zuul在微服务场景下的适用性。介绍了搭建网关的两种方式,一是基于Nginx,二是基于SpringCloud的Zuul,并讨论了服务治理和RPC框架设计的核心问题。
摘要由CSDN通过智能技术生成

APIGateway网关安全设计

Spring Cloud里面有个组件 Zuul网关

 

网关和 过滤器 拦截器很相似

网关可以实现过滤器 拦截器的功能 而且可以实现Nginx的基本功能 反向代理 负载均衡ribbon  

Nginx是软负载 ribbon本底客户端负载均衡

网关的核心基本作用: 路由地址  反向代理  黑名单与白名单系统(HTTP请求头的来源字段) 授权安全

 

DNS过程:先浏览器缓存 然后本底host文件 最后外网DNS解析  最终获取IP地址

 

      访问虚拟的VIP 

      lvs是四层负载均衡  基于IP+端口号  可以管理Nginx集群 

      外网部署LVS  (阿里云有负载均衡器可以买)

       Nginx基本要求: 一主一备

       Nginx走完再走网关

       网关可以拦截所有服务请求: 日志管理 权限控制 限流 安全控制

           

    

 

 

       

 

     既然Nginx可以实现网关,为什么需要Zuul。

      Zuul使用Java开发的 。Nginx是C开发的。Nginx功能比Zuul更强大。Zuul针对微服务的,Nginx针对服务器的。

      Zuul框架是微服务里面的一个组件,网关。

   

 

 注意:  LVS管理Nginx

  

搭建网关:

  1、Nginx也可以实现网关。

         a. 基于域名区分

         b.基于项目名称 

         

       拦击域名进行跳转:

     

    访问:

     

 

   

 

 

          

  2、基于SpringCloud Zuul搭建网关

      Eureka 

      服务A 

      服务B 

   

     网关的核心配置:

   

### 配置网关反向代理    
zuul:
  routes:
    api-a:
      path: /api-a/**
      serviceId: toov5_a     ##服务名称
    api-b:
      path: /api-b/** 
      serviceId: toov5_b     ##服务名称  

所以:

###注册 中心
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8100/eureka/
server:
  port: 80
###网关名称
spring:
  application:
    name: service-zuul
### 配置网关反向代理    
zuul:
  routes:
    api-a:
      path: /api-a/**
      serviceId: toov5_a
    api-b:
      path: /api-b/**
      serviceId: toov5_b

 

pom:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.RC1</spring-cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值