티스토리 뷰

# AWS EC2 생성

 

EC2(Elastic Compute Cloud)

-> 클라우드에서 빌려쓰는 가상 컴퓨터

 

// 인터넷을 통해 가상 서버(인스턴스)를 생성하여 

영체제를 설치하고 원하는 애플리케이션을 배포 수 있음

 

Instance

-> 클라우드에서 실행되는 가상 서버 (각각) 

 

Elastic(탄력성)

-> 필요에 따라 서버 사양 조절

// 트래픽 몰릴 때 서버 수 자동으로 늘릴 수 있음

 

Cost Optimization(비용 효율성)

-> 사용한 만큼만 비용 지불, 초기 인프라 구축 비용 절감


AWS Console에서 EC2 생성 진행함

서울 리전으로 변경 후 EC2 대시보드로 이동

-> 'Launch Instance' 

 

Linux(Ubuntu) 클릭, AMI는 기본 설정된 걸로.

인스턴스도 기본 설정된 t3.micro로.

이후 Key Pair 생성(.pem)

// 안전하게 보관하기(한번만 받을 수 있음)

 

 

이후 네트워크 설정 -> Security Groups

 

SSH(Secure Shell)

-> 안전한 원격 엑세스를 위해 컴퓨터 간 암호화된 연결을 설정하는 네트워크 프로토콜

// 원격 접속, 명령 제어, 파일 전송(보안 강화)

// 포트 번호 22번(SSH프로토콜 표준 // 공식 할당된 번호)

// My IP로 설정( Anywhere로 설정하면  누구나 내 서버 22번 포트까지 도달 가능.

비밀번호나 키 있어야 뚫리긴 하지만 시도 가능성 자체가 보안 위협. My IP가 더 안전)

 

SSH(Port 22)는 서버 관리자용 통로
HTTP(Port 80)과 HTTPS(Port 443)은 일반 방문객용 통로


스토리지 그냥 넉넉하게 20gb로 설정함(+ gp3)

// 프리티어 계정은 최대 30gb까지 무료로 설정 가능

 

인스턴스 개수는 1개

// 포트폴리오용이라 서버 1대면 충분

 

File systems는 안 건들고 패스

// EFS (Elastic File System)는 여러 대 EC2가 동시 연결해서 사용가능한 '공유 드라이브'

-> 서버 한대라 불필요
// S3 Files는 S3를 마치 서버의 하드디스크처럼 마운트해서 쓰게 해주는 최신 기능

->  포폴 사이트는 보통 위에 설정한 20gb 정도로도 충분
// FSx는 특정 운영체제나 고성능 환경에 최적화된 파일 시스템(예: Windows 서버 전용, 고성능 연산용 Lustre 등)
-> 기업용 특수 목적 서비스라 일반적 웹서비스 구축엔 필요 없음


Nginx(엔진엑스)
-> 고성능 웹 서버, 리버스 프록시, 로드 밸런서, 캐시 서버 역할을 수행하는 오픈 소스 소프트웨어 
 
// 웹서버: 사용자가 브라우저에 주소 입력하면, 서버에 저장된 HTML, CSS, 이미지 같은 정적 파일 읽어서 보여줌
// 리버스 프록시(Reverse Proxy): 클라이언트와 백엔드 서버 사이에서 중개인 역할.
보안상 실제 서버 IP 숨길 수 있고, 요청을 대신 받아  전달해줘서 더 안전하고 효율적
// 로드 밸런싱: 트래픽 몰릴 때 여러 대의 서버로 부하를 나누어 전달
 
 
굳이 왜 쓰는가? 
웹사이트를 보여준다는 목적만 있다면 Next.js나 Flask 같은 프레임워크 자체 서버로도 충분
but 단순히 파일을 보여주는 것을 넘어서
내 소중한 서버를 안전하게 보호하고(보안), 몰려오는 손님을 효율적으로 관리하며(로드 밸런싱),
중단 없는 서비스를 운영하기 위해 사용하는 '서버계의 필수 미들웨어'다.
 
// 실제 애플리케이션 서버를 외부 인터넷에 직접 노출하지 않음. 
앞에서 대신 방패막 역할 -> 리버스프록시
(이상한 공격을 막거나 특정 IP 차단하는 보안필터)
 
// 정적 파일의 초고속 처리 (Nginx가 메모리에 캐싱해 뒀다가 빠르게 뿌려줌)
 
// 무중단 배포의 핵심 ! (업데이트 할때도 서버를 끌 필요가 없음)
-> ex. 1번 서버 업데이트 동안 Nginx가 모든 손님을 2번 서버로 보냄
1번 서버 업데이트 끝나면 다시 손님 1번으로 보냄. (서비스 안 끊긴지도 모르게 업데이트 완료)
 
// SSL(HTTPS) 관리 편의성
-> 각 서버마다 인증서 설치할 필요 없이 Nginx에서만 인증서 설정하면 됨. 관리 쉬워짐

Nginx와 유사한 고성능 웹 서버 및 리버스 프록시 대안
 
1. Apache HTTP Server: 가장 오래되고 안정적인 서버
// 설정이 유연하고 다양한 기능을 모듈로 붙이기 좋지만, Nginx보다 동시 접속 처리 속도와 메모리 효율이 낮음

 

2. Traefik: 클라우드 네이티브 환경에서 널리 사용 되는 오픈 소스 리버스 프록시 및 로드 밸런서

// 도커(Docker)나 쿠버네티스에 최적화. 설정이 필요 없는 자동 감지 로드 밸런서(설정 자동화)

 

3. HAProxy: High Availability Proxy(고가용성 프록시)를 의미

// 로드 밸런싱 성능이 탁월. 대규모 트래픽 처리에 적합한 안정적인 오픈소스 프록시

 

4. Caddy: Go 언어로 작성된 현대적이고 강력한 오픈소스 웹 서버

// 설정이 매우 간단하고 사용자 친화적. 자동 SSL 인증(Let's Encrypt) 기능이 내장


# Nginx 설치 진행
 

ubunto OS는 이미 AWS 서버 안에 깔려있음(AMI)

우선 AWS 서버 접속(인스턴스 가서 만든 인스턴스 체크 후 connect)

'EC2 Instance Connect' 메뉴 뜸

-> 설정 그대로 내비두고 connect 클릭 (public IP, username도 ubuntu 그대로)

 

에러 메세지

문제해결)

인스턴스에서 Security 탭 클릭

-> sg-xxxx...로 시작하는 파란색 링크 클릭

-> Edit inbound rules 클릭

 

내 IP 확인 후 비교, 이미 설정 잘 되어 있음 근데 안 됨

-> 보안 그룹에서 SSH의 소스를 Anywhere(0.0.0.0/0)로 바꾸니깐 정상 실행

// 문제는 내 IP가 실제로는 다른 IP로 외부에 나가고 있거나, 중간에 IP가 변조됨

(집에서 와이파이 공유기 써서 그런듯)

 

우선 이 상태로 진행

 

1. 인스턴스 서버 접속

2. Nginx 설치 및 실행

 

sudo apt update

// 패키지 목록 업데이트 (공사 전 준비)
sudo apt install nginx -y

// Nginx 설치

 

// 리눅스에서 sudo(superuser do)는 root 권한으로 명령어를 실행하게 해주는 명령어

 

3. Nginx 상태 확인

sudo systemctl status nginx

-> active (running)이라고 뜨면 성공

 

4. 최종 결과 확인

브라우저 주소창에 내 EC2 퍼블릭 IPv4 주소(ex. 54.180.xxx.xxx)를 입력 

-> Welcome to Nginx 화면이 뜨면 끝

 

Hello World 같은 뿌듯함

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함