도메인 적용
EC2에 애플리케이션 서비스를 배포까지는 했다.
하지만 아직 도메인을 적용하지 않아서 불편하게 퍼블릭 IP를 입력해서 접속해야한다.
이번 글에서는 이름을 가진 도메인을 붙여볼것이다.
Nginx를 리버스 프록시로 사용하여 도메인으로 들어온 요청을 EC2 8080 포트로 포워딩 해보자.
사용 기술
- EC2
- Nginx
1. 도메인 확보
우선 도메인을 붙이려면 도메인을 어떻게든 마련해야 한다.
인터넷에 검색해보면 무료로 구할 수 있는 사이트도 있고, 가비아 같은 호스팅 사이트도 많다.
본인은 가비아에서 1년에 500원짜리 도메인을 샀다.
마이 페이지에서 아래의 도메인 란을 누르면 내 도메인을 확인할 수 있다.
2. DNS 레코드 수정
이제 도메인의 DNS 레코드를 설정해서 구매한 도메인으로 접속 시 EC2 서버로 포워딩 해줄것이다.
2-1. 내 도메인의 관리 창으로 이동
2-2. DNS 정보 란의 도메인 연결 설정 창으로 이동
내 도메인 관리 창에서 아래로 내려보면 DNS 정보 란이 보일것이다.
여기서 설정을 누르면 DNS 관리페이지로 넘어간다.
2-3. DNS 관리 페이지에서 DNS 설정
DNS 설정 버튼을 눌러서 DNS 레코드 설정을 해준다.
아래처럼 추가해준다.
호스트는 www, @ 를 넣어준다.
www로 넣으면 www.midcon.store 를 등록하는것이고 @로 넣으면 midcon.store 를 등록함을 의미한다.
값/위치에 해당하는것은 본인의 EC2 인스턴스의 퍼블릭 IP이다.
3. EC2 인스턴스의 인바운드 규칙 설정
우리는 HTTP 혹은 HTTPS 요청으로도메인명/경로 와 같은 형태로 요청을 받을 것이다.
따라서 HTTP 와 HTTPS에 해당하는 포트 번호를 인바운드 규칙 설정 해줘야한다.
보안그룹으로 이동해서 아래처럼 HTTP, HTTPS에 해당하는 80, 443 포트를 열어준다.
4. Nginx 설정
4-1. Nginx 설치
우선은 EC2에서 Nginx를 설치한다.
Ubuntu 환경의 경우 아래의 명령어를 입력하여 설치한다.
sudo apt-get install nginx -y // Nginx 설치
Nginx가 제대로 설치 되었다면 EC2의 퍼블릭 IP 주소로 접속하면 아래와 같은 화면이 뜰것이다.
4-2. Nginx 설정
HTTP 요청의 기본 포트값은 80이므로 도메인 명:8080 이 아닌 도메인 명 만 입력했을 때 80번 포트로 요청이 들어온다.
따라서 이러한 80번 포트의 요청을 원래 EC2 인스턴스의 8080 포트로 연결시켜야 한다.
이것을 Nginx를 이용해서 해볼 것이다.
Nginx의 기본 설정 값은 /etc/nginx/sites-available/default 파일에 설정돼 있다.
이 파일을 수정하여 원하는 설정으로 바꿀것이다.
리눅스 커맨드를 좀 알면 알아서 하겠지만 모른다면 아래 명령어를 입력하면 된다.
sudo vim /etc/nginx/sites-available/default // 관리자 권한으로 vim으로 뒤 경로 파일 실행
위 파일에 들어가면 대략 아래와 같은 창이 뜬다.
그럼 i를 눌러서 수정모드로 위 기본 서버 설정 아래에 아래처럼 입력해준다.
아래 설정이 위에서 설명한 80번 포트를 8080번 포트로 연결시켜주는 설정이다.
저장은 Ctrl + c 이후 :wq 입력 후 엔터를 누르면 된다.
# server_name 에 적힌 도메인으로 "/" 이하 경로로 접근 시(사실상 모든 경로) 8080포트로 위임
server {
listen 80;
server_name midcon.store www.midcon.store;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
설정을 변경할 때마다 아래 명령어로 Nginx를 재시작 해줘야 한다.
sudo service nginx restart
5. 결과 확인
아래처럼 도메인으로 접속해도 8080포트로 접속하는것처럼 잘 접속 된다.
참고자료
10분만에 끝내는 EC2 생성, NGINX 구성, SSL적용
이 포스팅에선 이론적인 내용에 보다는 구성 방법과 흐름에 대해서만 조망합니다. EC2 생성, NGINX 설치, 프록시 설정, 도메인 및 SSL 적용을 해본 적이 없거나 과정에 대해 모호한 부분이 있으시다
creampuffy.tistory.com
'DevOps > 서비스 배포' 카테고리의 다른 글
도메인 연결 2: Nginx와 certbot으로 무료로 SSL 적용 (0) | 2024.04.30 |
---|---|
EC2 인스턴스 타임존 설정 (0) | 2024.03.29 |
EC2 프리티어 성능 보완을 위한 Swap Memory 설정 (0) | 2024.03.27 |
AWS 배포 6: 보안 그룹 설정 (0) | 2024.02.29 |
AWS 배포 5: EC2에서 Spring Boot 서버 띄우기 (0) | 2024.02.28 |