DevOps
3 posts
Nginx CORS + https 설정 문제 해결하기

Nginx 기존 설정 파일은 아래와 같다. 하지만 원인을 알 수 없는 CORS 오류가 자꾸 발생했다. Frontend, Backend 코드 모두 뜯어보고 고쳐보았으나 전혀 방법이 없었는데, 시험 삼아 nginx를 거치지 않고 요청을 보내보니 잘 전송되는 것을 확인할 수 있었다. 😨 즉, CORS의 원인은 nginx 때문이었던 것! nginx CORS 오류 수정하기 처음에 옵션을 적용할 경우 원본 서버의 헤더가 있는 경우 을 추가하면 해결된다고 하여 추가했다. 하지만, CORS오류는 여전히 해결되지 않았고, 아래와 같이 와일드 카드를 제거하고 옵션을 추가했다. (이 옵션은 추후 쿠키 사용을 위해 추가한 것도 있다.) 그러나 여전히 해결되지 않았다………ㅠ_ㅠ 위 오류 메세지를 다시 참고했는데, Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response. 즉…

Server Production 환경 구축하기(1) - VPC와 서브넷으로 EC2 추가하기

VPC(Virtual Private Cloud) image https://velog.io/@server30sopt/VPC-서브넷-설정으로-RDS에-안전하게-접근하기 물리적으로는 같은 클라우드 상에 있으나, 보안상의 목적을 위해 논리적으로 다른 클라우드인 것처럼 동작하도록 만든 가상 클라우드 환경 VPC 별로 다른 네트워크를 설정할 수 있으며, 독립된 네트워크처럼 작동한다. 만약 VPC를 설정하지 않은 경우 아래와 같은 구조를 띈다. image 하나의 VPC는 하나의 Region 내에서만 생성이 가능하지만, 두 개 이상의 리전에 걸치는 것은 불가능하다. 하지만 하나의 VPC는 여러개의 Amazon Availability Zone에 걸쳐서 생성될 수 있다. VPC 구조 image 서브넷(Subnet) 보안, 통신 성능 향상 등을 목적으로 VPC를 쪼갠 단위 Public Subnet 외부에서 접근 가능한 네트워크 영역 인터넷 게이트웨이, ELB, Public IP / Elastic IP…

Spring Boot에서 Docker 이미지 최적화하기

일반적으로 Spring Boot 애플리케이션을 Docker를 이용해 배포할 경우 아래와 같이 작성한다. 그러나 위와 같이 Docker 이미지를 만드는 것은 상당히 비효율적이다. Docker는 빌드 시 레이어마다 캐시 기능을 사용할 수 있기 때문에 빠른 빌드가 가능하다. 만약 변경된 부분이 없다면 캐시를 이용해 기존에 빌드했던 레이어를 재사용하기 때문에 속도가 빨라진다. 하지만 위와 같이 코드를 작성하면 jar 파일 전체를 빌드하기 때문에 캐시 기능을 사용할 수 없다. Dockerfile을 위 구조로 구성하면, Java의 모든 구조가 jar 파일로 묶이기 때문에 layer를 재사용하기 어렵기 때문이다. 기존 방식으로 Docker 빌드하기 첫 애플리케이션 빌드 (6.6s) image 코드 수정 후 재빌드 (5.0s) image 이미지 크기는 아래와 같다. (약 700MB) image 새로운 방식으로 Docker 빌드하기 - Layered Jar 사용하기 Layered Jar란? Lay…