나정이의 공부/IT

jetty http -> https redirect 적용 ( ++ SecuredRedirectHandler 기능 )

나정_ 2022. 7. 12. 08:42
728x90
반응형

안녕하세요 나정입니다.

작년부터 인수인계 받은 중계 서버가 jetty로 구동되면서 요즘 jetty config 및 설정방법을 많이 찾아보는중인데요 

http -> https 로 redirect 해주는 간단한 class가 있어 공유하고자 적어봅니다.

 

org.eclipse.jetty.server.handlers.SecuredRedirectHandler

SecuredRedirectHandler

해당 class는 최근 9.2xxx version부터 사용가능해보이더라구요. 원래 redirect해주려면 tomcat은 좀 귀찮았는데 여긴 뭐 class 하나만 쓰면되니까 개꿀 ... 

사용방법은 간단하게 아래와 같아요. 

아 참고로 HandlerCollection에 넣어줄때 다른 handler보다 첫번째로 넣어줘야 https로 변환됩니다. 

안그럼 적용이 안되는거 같더라구요 . 

 

일단 제 로직 기준으로 ㄱㄱ 


           server = new Server();
           HandlerCollection handlers = new HandlerCollection();


            if(redirectSuites){
                handlers.addHandler(new SecuredRedirectHandler()); // 이렇게 넣어줘용! 
            }
            String dtiPath="" ;
            String dtiWarPath="";
            logger.info("**********************************************");
            for (Path path : finder.getPaths()) {

                String fileName = path.getFileName().toString();

                //System.out.println(fileName);
                logger.info("file : {}", fileName);

                Pattern p = Pattern.compile("^\\w+(?=[-.*|\\.])");
                Matcher m = p.matcher(fileName);

                while (m.find()) {

                    String extractWarDirName = "";
                    String contextName = m.group();
                    logger.info("* application : {}, context path : {}", contextName, contextName);

                    WebAppContext webapp = new WebAppContext();
                    webapp.setContextPath("/" + contextName);
                    webapp.setWar(path.toAbsolutePath().toString());
                    WebAppClassLoader loader = new WebAppClassLoader(webapp);

                    Resource jars = Resource.newResource(
                        System.getProperty("NAJUNG_HOME") + File.separator + "lib");

                    loader.addJars(jars);
                    webapp.setClassLoader(loader);

         
                    extractWarDirName = System.getProperty("java.io.tmpdir") +
                                        "NAJUNG" + File.separator +
                                        "jetty-0.0.0.0-" + connector.getPort() + "-" + fileName + "-" + UUID.randomUUID();

                    //System.out.println("fileName = " + fileName);

                    webapp.setTempDirectory(new File(extractWarDirName));
                    System.out.println("war extract target directory : " + extractWarDirName);

                    handlers.addHandler(webapp);  // 여긴 뭐 기존 서비스 배포 WAR 파일관련 webbapp넣어주는 로직 


                }

              server.setHandler(handlers); // 적용된 handler를 server에 넣어준 뒤 
              server.start(); // 서버 시작~
              server.join();
     

이렇게 사용하면 http://najungis.tistory.com/53 으로 접근하면 https://najungis.tistory.com/53으로 이동됩니다.

매우 쉽쥬 .. jetty 굳굳 

속도도 더 빠르고 너란녀석.. 맘에들어 

728x90
반응형