JUINTINATION
AWS 엘라스틱빈스톡 504 Gateway Timeout 에러 본문
지난 AWS 엘라스틱빈스톡으로 React 프로젝트 배포하기 글에서 언급했듯이, 학술제 준비를 위해 프로젝트 배포를 진행중이었다. 드디어 리액트 프로젝트 배포에 성공하였고, 이후에 스프링 서버도 충분히 헤매다가 결국 배포에 성공했다. 이후에 413 에러를 방지하기 위해 AWS 엘라스틱빈스톡 413 Request Entity Too Large 오류 글에서 언급한 방법도 적용했다.
실제로 동영상을 공간 이미지로 변환이 가능한지에 대한 테스트를 진행하던 중에 갑자기 에러가 발생하며 중지되었다.
CORS 에러
갑자기 CORS 에러가 발생한 것이다. 이전까지 회원가입, 로그인과 같은 기능은 잘 됐으면서 갑자기 CORS 에러가 왜..? 그래도 혹시 모르니 작성했던 server.js 파일에 CORS 관련 내용을 추가해서 다시 배포해봤지만 똑같은 에러가 발생했다.
스프링 서버와 스티칭 서버는 이미 CORS 관련 설정이 되어있기 때문에 문제가 없을 것이라고 판단되었지만, 혹시 모르니 보안 그룹의 인바운드 규칙을 수정한 뒤 Postman을 이용해서 테스트를 진행했다.
504 gateway time-out
테스트를 진행할 당시의 에러 메시지와 관련 증거 사진들을 남겨두지 않았지만, 1m 0.12s에 타임아웃 관련 에러가 발생했다. 에러가 발생한 이후에 스티칭이 완료되면 스프링에서도, 리액트에서도 결과물을 확인할 수 있는 것을 보니 관련 설정을 변경해야겠다고 생각했다.
해결 방법
관련 내용은 AWS 엘라스틱빈스톡 413 Request Entity Too Large 오류 글의 해결 과정 부분을 보면 된다.
지금까지 배포 이후에 테스트했던 영상들은 카카오톡을 통해 자동으로 압축되며 용량이 작아져서 기존의 30MB의 client_max_body_size로도 충분했는데, 실제로 사용자들이 약 1분 가량의 공간을 촬영한 동영상의 크기는 훨씬 크기 때문에 관련 내용을 수정하고, 이번에 발생한 문제를 해결하기 위해 유휴시간설정을 진행해야 한다. 그래서 이전에 작성해둔 custom.conf(이하 myconf.conf) 파일을 다음과 같이 수정하였다.
client_max_body_size 200M;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
먼저 AWS 엘라스틱빈스톡 내부 구성 직접 확인하기 글에서 사용한 방법처럼 SSH 접속을 진행하고 $ cd /etc/nginx/conf.d
명령어로 myconf.conf
파일이 위치한 디렉터리로 이동한 뒤 $ sudo vi myconf.conf
명령어로 해당 파일의 내용을 위와 같이 수정하였다. 마지막으로 $ sudo service nginx reload
명령어로 NginX 설정을 재시작해주면 끝이다. 참고한 블로그는 아래와 같다.
결론
Elastic Beanstalk은 원래 파일 하나를 올리고 배포 버튼 한 번만 딸깍 하면 되는 편한 것인데, 위와 같이 직접 nginx 설정을 건드리는 것은 올바르지 않다는 생각은 아직까지 변하지 않았지만, 다른 방법을 아직까지 찾지 못했다. 분명 방법이 있을텐데.. 아무튼 관련 방법을 찾게 된다면 또 다시 테스트를 해보고 글을 작성해야겠다.
'Amazon Web Services' 카테고리의 다른 글
AWS 엘라스틱빈스톡 conf 파일과 함께 프로젝트 배포하기 (1) | 2024.11.07 |
---|---|
AWS 엘라스틱빈스톡으로 React 프로젝트 배포하기 (1) | 2024.11.05 |
AWS Ubuntu 22.04 LTS EC2 파이썬 버전 변경하기 (5) | 2024.10.26 |
AWS 엘라스틱빈스톡 413 Request Entity Too Large 오류 (0) | 2024.07.29 |
GitHub Actions를 활용한 CI/CD 배포 (0) | 2024.07.19 |