SpringCloud (6) 경로 게 이 트 웨 이

2867 단어
게 이 트 웨 이 의 주요 기능 은 퍼 가기 와 필터 이다.게 이 트 웨 이 는 요청 을 차단 하고 퍼 가기 요청 을 처리 합 니 다. zuul 게 이 트 웨 이 는 기본적으로 Ribbon 과 결합 하여 부하 균형 기능 을 실현 합 니 다. nginx 퍼 가기 와 유사 합 니 다.그러나 게 이 트 웨 이 는 필터, Nginx 와 다르다.
게 이 트 웨 이와 필터 의 차이
게 이 트 웨 이 는 모든 서버 요청 을 차단 하여 제어 필 터 를 차단 하여 하나의 서버 요청 을 제어 하 는 것 입 니 다.
Nginx 와 Zuul 의 차이
Nginx 는 서버 부하 균형 을 이용 하여 리 트 윗 을 하 는 Zuul 은 Ribbon 과 eureka 에 의존 하여 로 컬 부하 균형 리 트 윗 을 실현 합 니 다.
SpringCloudZuul 게 이 트 웨 이 플랫폼 구축
yml 설정
###     
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8100/eureka/
server:
  port: 80
###    
spring:
  application:
    name: service-zuul
###             
zuul:
  routes:
    api-a:
      ###    127.0.0.1:80/api-member/       Zuul   ,           app-member  
      ###   /api-member/         
      path: /api-member/**
      serviceId: app-member
    api-b:
      ###   /api-order/         
      path: /api-order/**
      serviceId: app-order

127.0.0.1: 80 / api - member / 를 요청 할 때 이 서 비 스 는 Zuul 필 터 를 먼저 가 고 필 터 를 걸 으 면 app - member 서비스, api - b 로 전 송 됩 니 다. 또한 같은 처리 입 니 다. 다른 서비스 가 있 으 면 api - c.. pom 의존 도 를 계속 추가 할 수 있 습 니 다.

            org.springframework.cloud
            spring-cloud-starter-netflix-zuul
        

Zuul 게 이 트 웨 이 작성
@Component
public class TokenFilter extends ZuulFilter {

    //              
    public Object run() throws ZuulException {
        //   :         ,            userToken  

        // 1.     
        RequestContext currentContext = RequestContext.getCurrentContext();
        // 2.   Request
        HttpServletRequest request = currentContext.getRequest();
        // 3.  token            
        String userToken = request.getParameter("token");
        if (StringUtils.isEmpty(token)) {
            //       ...          ,            
            currentContext.setSendZuulResponse(false);
            currentContext.setResponseBody("token is null");
            currentContext.setResponseStatusCode(401);
            return null;
            //         
        }
        //             ...
        return null;
    }

    //        
    public boolean shouldFilter() {
        return true;
    }

    //        ,                        ,         
    public int filterOrder() {
        return 0;
    }

    //      pre            
    @Override
    public String filterType() {
        return "pre";
    }

}

Zuul 게 이 트 웨 이 서비스 시작
/**
 * Zuul         ,          eureka    , Zuul            
 */
@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy
public class AppGateWay {
    // @EnableZuulProxy       
    public static void main(String[] args) {
        SpringApplication.run(AppGateWay.class, args);
    }

}

좋은 웹페이지 즐겨찾기