MSA- front 서버 redirect 포트 번호 문제

김정현·2024년 8월 13일
0

MSA

목록 보기
3/4

MSA에서 redirect: 를 사용하게 될 경우 GateWay 기준 포트번호로 이동하는 것이 아닌 Front 서버를 기준으로 이동하게 된다.

이렇게 될 경우 게이트웨이를 통해 접속하는 것이 아닌 프론트 서버에 직접 접근하는 것이기 때문에 config 서버 등 다른 서버와 데이터를 주고 받을 수 없게 된다.

이를 해결하기 위해서

 public String url(String url) {
        List<ServiceInstance> instances = discoveryClient.getInstances("front-service");

        try {
            return String.format("%s%s", instances.get(0).getUri().toString(), url);
        } catch (Exception e) {
            return String.format("%s://%s:%d%s%s", request.getScheme(), request.getServerName(), request.getServerPort(), request.getContextPath(), url);
        }
    }

    public String redirectUrl(String url) {
        String _fromGateway = Objects.requireNonNullElse(request.getHeader("from-gateway"), "false");
        String gatewayHost = Objects.requireNonNullElse(request.getHeader("gateway-host"), "");
        boolean fromGateway = _fromGateway.equals("true");

        return fromGateway ? request.getScheme() + "://" + gatewayHost + "/app" + url : request.getContextPath() + url;
    }

게이트웨이를 통해야하는 경로는 해당 메서드를 통해 유입하게 했다.
EX)

0개의 댓글