ec2 스프링 https 적용 (feat. 도메인 적용)
823
작성한 질문수 6
안녕하세요 웹 프로젝트 진행 중 궁금한 점이 생겨 질문드립니다.
react와 spring으로 개발을 진행하였고 둘다 ci/cd 적용을 해서 배포를 해둔 상태입니다!
문제상황
프론트는 도메인을 구입하여 https가 적용된 상태
벡엔드는 Ec2에서 돌아가고 있어 탄력적 ip만 사용하여 http만 적용
해결방법
프론트 도메인이 xxx.com이고 도메인을 하나 더 구입하여(xxx.net) 서버가 돌고 있는 ec2와 연결해 aws acm을 사용해 https가 적용되도록 하였습니다.
궁금한 점
프로젝트가 끝난 후 찾아보니 xxx.com(프론트 도메인)에 서브 도메인을 등록하여서 백엔드 로드벨런서를 적용하면 api.xxx.com을 백엔드 도메인으로 사용이 가능한 것으로 이해했는데 맞을까요?
서브 도메인 말고 하나의 도메인으로 프론트와 백엔드를 처리하는 방법이 있을까요?
실제로 많이 사용하는 서버가 올라가져 있는 ec2에 https를 적용하는 방법은 무엇인지 궁금합니다
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
네, 만약 xxx.com 도메인이 당신의 것이고 DNS 설정 권한이 있다면, 서브 도메인을 생성하여 AWS 로드 밸런서 또는 EC2 인스턴스와 연결하는 것이 가능합니다. 서브 도메인을 만들고 적절한 레코드(A 레코드나 CNAME 레코드 등)로 AWS 리소스를 가리키도록 설정하면 api.xxx.com을 백엔드 도메인으로 사용할 수 있습니다.
프론트엔드와 백엔드를 하나의 도메인으로 처리하려면 리버스 프록시를 설정할 수 있습니다. 예를 들어, Nginx나 Apache와 같은 웹 서버는 특정 경로(ex: /api)로 들어오는 요청을 백엔드 서버로 프록시하는 역할을 할 수 있습니다. 이러한 설정을 통해 하나의 도메인으로 모든 요청을 처리하고 내부적으로 프론트엔드와 백엔드 서버로 라우팅하는 것이 가능합니다.
EC2 인스턴스에 HTTPS를 적용하려면, 먼저 SSL/TLS 인증서가 필요합니다. AWS Certificate Manager(ACM)를 사용하여 인증서를 발급받거나 Let’s Encrypt와 같은 서비스를 사용할 수 있습니다. 인증서를 받으면, EC2 인스턴스에서 실행되는 웹 서버에 이를 적용해야 합니다.
- Apache를 사용하는 경우는 SSL 모듈과 함께 VirtualHost 설정을 수정합니다.
- Nginx를 사용하는 경우는 SSL 설정을 server 블록에 추가합니다.
- 또한, EC2 인스턴스 대신 AWS Elastic Load Balancing을 사용하여 SSL/TLS 인증서를 로드 밸런서에 적용할 수도 있고, EC2 인스턴스에 직접 SSL/TLS 인증서를 설치할 수도 있습니다.
- Apache를 사용하는 경우는 SSL 모듈과 함께 VirtualHost 설정을 수정합니다.
추가적으로 Spring Boot 애플리케이션에 HTTPS를 적용하기 위해서는 application.properties나 application.yml 파일에 적절한 설정을 추가하고, Spring Security를 이용하여 보안 구성을 제공하는 것이 좋습니다. 올려주신 정보에 따르면, Spring Boot는 프록시 서버 배후에서 실행될 때 “x-forwarded-for”와 “x-forwarded-proto” 헤더를 인식하고 요청이 안전한지 여부를 결정할 수 있게 해줍니다. 자세한 내용은 Spring Boot Reference Documentation에서 확인하실 수 있습니다.
조회속도 개선에서 더 개선하는 방법이 궁금합니다.
0
14
2
Sequence 관련 질문
1
23
2
Image Only Query
1
22
2
servlet과 container에 대한 질문입니다
0
21
1
RepositoryTest의 패키지 위치가 domain인 이유
0
23
2
도메인 모델에서 관계와 규칙을 구분하는 방법
0
35
2
UserService, CertificationService 책임 분리 기준 질문
0
23
1
spring initialiser 어떤걸 선택해야될지 모르겠어요
0
31
2
구현체가 동적으로 정해질 때, 팩토리 기법을 사용하나요?
0
47
2
Json 요청 처리
1
28
2
로그아웃-logout()-2 강에서 겟방식 로그아웃 호출 후 화면이동 질문입니다.
0
25
2
Build 관련 문제 (테스트 관련 문제)
0
40
2
job, step execution 관련 질문 드립니다.
0
28
2
다양한 관점의 코드 경험을 위해 개선하지 않은 코드
1
44
1
이미지 업로드와 db 트랜잭션 묶는법
0
40
1
sdk 설정 오류
0
47
2
Orchestration SAGA 패턴 보상에 대한 질문입니다.
0
49
2
[건의][6장][작전1] deprecated 메소드
1
45
2
[예제][3장][작전2] windows 에서 마지막 예제
0
37
1
NaverBookRepository.class 의 위치에 따른 모듈간의 의존성에 대해 질문드립니다.
1
30
2
ProductOption을 통한 FindProductOption에 관한 질문
1
41
2
Could not resolve org.springframework.boot:spring-boot-starter-validation:2.4.4
0
45
2
상수에 관련해서 질문있습니다.
1
42
2
histories() 응답에 PointHistory.id를 포함한 이유가 궁금합니다/
1
41
2





