-
moviemoa 프로젝트 배포 중 문제 해결오답노트/오류 해결 2025. 7. 20. 01:10
OCI에서 Spring Boot + React 프로젝트 운영 중 발생한 접속 문제 해결
1. 개요
Oracle Cloud Infrastructure(OCI) 상에서 Spring Boot + React 애플리케이션을 배포하던 중, 다음과 같은 문제들이 발생하였다.
- 외부에서 포트 80, 8080 접속 시 연결 시간 초과
- React 정적 리소스(이미지 등) 접근 시 403 Forbidden
- React SPA에서 /board/1 등 경로 새로고침 시 Whitelabel 에러 노출
- MariaDB 연결 오류
이 글은 위 문제들에 대한 확인 및 해결 과정을 정리한 것이다.
2. MariaDB 연결 오류
문제
- 오류 메시지: Access denied for user 'myuser'@'localhost' to database 'moiveinfo'
- 원인: DB 이름 오타 및 사용자 권한 설정 미비
해결
- myuser 유저를 만든 후 moviemoa 데이터베이스의 권한을 부여했다.
DROP USER IF EXISTS 'myuser'@'localhost'; CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword'; GRANT ALL PRIVILEGES ON movieinfo.* TO 'myuser'@'localhost'; FLUSH PRIVILEGES;- application.properties 수정:
- 데이터베이스와 소스 유저 정보등을 입력해주었다.
너무나도 기본적이고 기초적인 사항이지만 배포할때는 항상 까먹는다..
3. 외부 접속 불가 (포트 80, 8080 연결 시간 초과)
확인
- Nginx는 0.0.0.0:80, Spring은 0.0.0.0:8080 리슨 중
- OCI 보안 목록에서 포트 80, 8080 인바운드 허용 상태
- 내부에서는 curl localhost 정상
- 외부에서는 curl http://공인IP 실패
원인
- iptables에서 외부에서 들어오는 새 연결(--state NEW)에 대한 명확한 허용 규칙이 없음
- REJECT 규칙이 먼저 적용되어 포트 80/8080 연결 차단
해결
- 포트 8080 허용:
- sudo iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
- 포트 80 허용 (명확한 위치 지정 포함):
- sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
- 설정 저장:
- sudo netfilter-persistent save
오라클 클라우드에서 포트 여는 문제로 어려움을 겪는 분들을 위한 팁입니다. : r/oraclecloud
Reddit의 oraclecloud 커뮤니티
oraclecloud 커뮤니티에서 이 게시글을 비롯한 다양한 콘텐츠를 살펴보세요
www.reddit.com
이거는 정말 억까 중에 억까인거 같고 iptables 보다는 utw 를 깔아서 사용하는게 좋아보인다. 너무 알아보기 힘들고 우선순위가 있다는걸 나중에 알아서 시간 낭비를 너무 많이 했다.
4. React 정적 리소스 403 Forbidden
원인
- Spring Security에서 /static/**, /img/**, /error 등의 경로에 대한 접근 허용이 누락됨
해결
- SecurityConfig에 아래와 같이 명시:
- .requestMatchers("/", "/index.html", "/favicon.ico", "/static/**", "/js/**", "/css/**", "/images/**", "/api/auth/login", "/api/public/**", "/error") .permitAll()
@Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { // 확장자가 없는 모든 경로를 index.html로 포워딩 registry.addViewController("/{spring:[^\\.]+}") .setViewName("forward:/index.html"); // /a/b, /a/b/c 같은 하위 경로도 처리 registry.addViewController("/**/{spring:[^\\.]+}") .setViewName("forward:/index.html"); } }
5. SPA 새로고침 문제
원인
- React 라우팅 경로를 서버(Spring)가 알지 못해 403 또는 404 발생
첫 메인 페이지 진입을 되었지만 새로고침 시 아예 페이지 로드가 안되어버리는 문제가 발생했고 프론트 리액트와 백엔드 사이의 경로가 지정되어있지 않아서 생긴 문제이였다.
해결
- Spring Controller에 포워딩 로직 추가:
@Controller public class WebController implements ErrorController { @GetMapping({"/", "/error"}) public String index() { return "index.html"; } }
이상으로, OCI 환경에서 Spring Boot + React 프로젝트 운영 중 겪은 접속 문제 해결 과정을 정리하였다. iptables, Spring Security, 라우팅 설정 등 여러 계층에서 발생할 수 있는 문제들을 통합적으로 점검하고 해결하는 것이 중요하다.
'오답노트 > 오류 해결' 카테고리의 다른 글
MapStruct 자동 매핑이 안 될 때 확인할 것들(Lombok) (0) 2025.04.23 Spring boot - 인텔리제이에서 JPA 환경 구축 중 접속 불가 (0) 2024.12.28 Spring - 라이브러리를 불러오지 못하는 문제 발생(Maven Denpendencies) (0) 2024.04.08 Spring - Deployment Assembly 에서 The given project is not a virtual component project 오류 해결 (0) 2024.03.24 Spring - pom.xml 파일에서 <packaging>war</packaging> 에 에러가 생기는 상황 (0) 2024.03.24