728x90
반응형
#spring.data.rest.base-path=/api
#spring.data.rest.basePath=/api
server.servlet.context-path=/api

React, SpringBoot 기반으로 웹서비스를  HTTP 프로토콜로 개발한 이후,   

SSL 인증서를 적용하여 HTTS 프로토콜 서비스를 하는 것을 설명/기록하고자 합니다.

 

크게 작업하여야 할 것은

  • Nginx에서  SSL 관련 키 파일, 인증파일, 서비스 포트 등을  conf 파일에 적용
  • React에서 SpringBoot API 호출할 때의 포트 변경 

으로 마무리될 수 있습니다.

 

하지만,  약간의 전제 조건들이 있습니다.

 

1. React 는 기본으로 3000번 포트를 사용

2.SpringBoot는 기본으로 8080 포트로, http 서비스 로 Embedded Tomcat서버로 구동

3. SpringBoot의  API는  context 경로( 예를 들면,  /api )가 지정되어 있어야  Nginx에서  React와 SpringBoot 모두를 Proxy할 수 있음.( <-  동일한  / 경로는  중복 설정되지 않기 때문.)

 

위의 전제 조건 중에서 1번과 2번은 기본으로 세팅되죠.  3번은  

#spring.data.rest.base-path=/api
#spring.data.rest.basePath=/api
server.servlet.context-path=/api

 

중 유효한 것을 적용합니다.  필자의 경우  SpringBoot가 2.6.12 임에도 인터넷 검색을 통한 지정하는 프로터피가 제대로 적용되지 않아  여러 개를 시도하다가 결국 최종적으로  마지막 형식이 제대로 동작한다는 것을 확인하였습니다.

 

위 HTTP환경에서 Nginx는 환경 구성은

server{
        server_name     www.yourdomain.com;
        location / {
                proxy_pass http://www.yourdomain.com:3000;
        }
        location /api {
                proxy_pass http://www.yourdomain.com:8080;
        }
}

 

이면 충분히 동작합니다.

이 때 React에서 SpringBoot로 API를 호출할 때는 

export const SERVER_URL='http://wwww.yourdomain.com:8080/api/';

 

으로 제대로 동작할 것입니다.

 


 

이제  HTTPS 서비스로 전환해 보겠습니다.

변경해야 할 부분은

    - Nginx의 configuration

    - React에서 API 호출하는 URI

의 2군데 입니다.

Nginx를 사용하기 때문에,  SpringBoot에서 SSL 적용에 따른 조치 사항은 수행하지 않습니다.

 

먼저 Nginx 의   conf 파일 내용 변경

server{
		listen				443 ssl;
        server_name     	www.yourdomain.com;
        ssl_certificate		certification.crt
        ssl_certificate_key	certification.key        
        
        location / {
                proxy_pass http://www.yourdomain.com:3000;
        }
        location /api {
                proxy_pass http://www.yourdomain.com:8080;
        }
}

 

로 2, 4, 5 줄을 추가해 준다, 다른 부분은 수정을 하지 않습니다.

 

그리고 React에서 API호출하는 URL를 변경합니다.

export const SERVER_URL='https://wwww.yourdomain.com/api/';

 

https로 표현하였고, 포트를 없앴습니다. 기본값이 443 사용.

 

 

 

다루어야 할 것이   3가지 요소이고( React, SpringBoot(Tomcat), Nginx)

URI, 포트, 프로토콜 및  Proxy 지정 등이 있어.

제대로 통신이 되지 않을 때  살펴보거나   디버깅할 때 조합의 경우의 수가 많습니다. 도움이 되길 바랍니다.

 

맨 앞단에, 브라우저의 URI  또는 API URI 를

Nginx에서 처리하는데

URI의 경우에 따라 처리(proxy: 위임, 돌리기)하는데,

https를 하면서 기본 포트가 변경되는 부분이 있다

 

가 주요 큰 흐름이고 이를 제대로 적용하면 됩니다.

728x90
반응형
728x90
반응형

 

개발단계 로그 출력 레벨 변경

application.properties 파일 내의

 

logging.level.org.springframework = debug

 

값으로 설정 변경한다.

 

 

 

변경전 기본 : INFO 레벨

2024-02-14T09:50:19.423+09:00  INFO 23884 --- [           main] k.p.s.thymeleaf.ThymeleafApplication     : Starting ThymeleafApplication using Java 17.0.9 with PID 23884 (D:\ProgramLang\thymeleaf\target\classes started by User in D:\ProgramLang\thymeleaf)
2024-02-14T09:50:19.426+09:00  INFO 23884 --- [           main] k.p.s.thymeleaf.ThymeleafApplication     : No active profile set, falling back to 1 default profile: "default"
2024-02-14T09:50:20.242+09:00  INFO 23884 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port 8080 (http)
2024-02-14T09:50:20.252+09:00  INFO 23884 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2024-02-14T09:50:20.252+09:00  INFO 23884 --- [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.18]
2024-02-14T09:50:20.314+09:00  INFO 23884 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2024-02-14T09:50:20.315+09:00  INFO 23884 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 843 ms
2024-02-14T09:50:20.415+09:00  INFO 23884 --- [           main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page: class path resource [static/index.html]
2024-02-14T09:50:20.641+09:00  INFO 23884 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port 8080 (http) with context path ''
2024-02-14T09:50:20.649+09:00  INFO 23884 --- [           main] k.p.s.thymeleaf.ThymeleafApplication     : Started ThymeleafApplication in 1.544 seconds (process running for 1.921)

 

 

변경 후 : DEBUG 레벨

2024-02-14T09:52:39.114+09:00  INFO 3328 --- [           main] k.p.s.thymeleaf.ThymeleafApplication     : Starting ThymeleafApplication using Java 17.0.9 with PID 3328 (D:\ProgramLang\thymeleaf\target\classes started by User in D:\ProgramLang\thymeleaf)
2024-02-14T09:52:39.117+09:00  INFO 3328 --- [           main] k.p.s.thymeleaf.ThymeleafApplication     : No active profile set, falling back to 1 default profile: "default"
2024-02-14T09:52:39.118+09:00 DEBUG 3328 --- [           main] o.s.boot.SpringApplication               : Loading source class kr.pe.speech.thymeleaf.ThymeleafApplication
2024-02-14T09:52:39.163+09:00 DEBUG 3328 --- [           main] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@49c90a9c
2024-02-14T09:52:39.181+09:00 DEBUG 3328 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Creating shared instance of singleton bean 'org.springframework.context.annotation.internalConfigurationAnnotationProcessor'
2024-02-14T09:52:39.193+09:00 DEBUG 3328 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Creating shared instance of singleton bean 'org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory'
2024-02-14T09:52:39.642+09:00 DEBUG 3328 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Creating shared instance of singleton bean 'propertySourcesPlaceholderConfigurer'
2024-02-14T09:52:39.647+09:00 DEBUG 3328 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Creating shared instance of singleton bean 'org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor'
2024-02-14T09:52:39.652+09:00 DEBUG 3328 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Creating shared instance of singleton bean 'org.springframework.context.event.internalEventListenerProcessor'
2024-02-14T09:52:39.653+09:00 DEBUG 3328 --- [           mai

 

 

 

 

파일로 로그 정보를 출력하는 것은 별개임

728x90
반응형
728x90
반응형

 

 

 

 

 

728x90
반응형
728x90
반응형

 

웹서비스 개발 과정에서 직접 경험한 것만을 정리해 봅니다.

-⭕ Case 1✔ Case2❤
백엔드
프로그램언어
Python Java
백엔드
프레임워크(또는 개발용 웹서버)
Flask SpringBoot
백엔드
웹서버
(운영서버:https, 80)
[Ngnix] [Ngnix]
백엔드
데이터베이스
PostgreSQL
MongoDB
MySQL
백엔드 
데이터베이스 활용
via Python Libarary JPA
종속성 관리 package.json pom.xml
응용 프로그램 사용자 통계정보 테이블 WEB BIZ 
배포 및 수행조건 -
python 설치
pip 도구
maven::deploy ->  jar
java설치
(http://webbiz.llxxxxxx.io)
구동 명령어 python ./app.py java -jar webbiz-0.0.1-SNAPSHOT.jar
개발도구 Visual Studio
Code
( PyCharm )
Intelli J
(Eclipse)
저장소 GitHub(trans_statistics)
(private)
GitHub(cardatabase)
(public)
배포 및 서버 자원 StreamLit or Heroku ( 무료서버자원 가능)  
     
프론트엔드
프로그램언어
Vanilla Javascript  +
HTML +
JINJA 2.0 +

React JavaScript
Bootstrap(md5)
[CSS(ant design)]
배포 및 수행 조건 웹브라우저 Node.JS
(npm 도구)
(배포본: npm run build)
(http://webbiz.llxxxxxx.io:3000)
구동 명령어   /usr/local/bin/serve -n -s build 
(개발서버에서는> npm start )
개발도구   Visual Studio Code
저장소   GitHub(MDB5-REACT-UI-KIT-FREE-6.1.0)
주요 기능   카드결제/SSO인증/Auth
Kakao-Developer-플랫폼-웹-URL
Robots.txt 테스팅

 

 

API 를 사용해 보는 클라이언트 프로그램 개발에서 직접 경험한 것을 정리해 봅니다.

  Case 1 Case 2 Case 3 Case 4
프로그램 언어 C# JAVA Java Script Python
개발도구 Visual Studio 2017   Visual Studio Code Python IDE, Atom, Pycharm, Visual Studio Code
목표/대상 MS-Office Add-In 기능 백엔드 샘플 프로그램. HTML 화면 수행속도 측정
배포 및 수행 msi,   exe java node js  python3
종속성 Distribution 2017   npm 도구 pip 도구
요청(Request)   문장 String,  파일객체   문장 String
응답(Response)   JSON JSON JSON
극복한 knowhow   HTTPS문제 CORS문제  

 

 

728x90
반응형

+ Recent posts