Nginx
Nginx란?
웹 서버 및 리버스 프록시 서버로 널리 사용되는 소프트웨어입니다.
Nginx는 경량이면서도 높은 성능을 제공하는 특징으로 유명합니다.
특히 동시접속 처리에 특화된 웹 서버 프로그램입니다
Nginx를 사용하는 이유
초당 10개의 트래픽만 받아도 벅찬 서버에 초당 30개의 트래픽이 들어온다면 -> 서버가 멈추면서 장애발생!!
->문제해결?
여러대의 서버를 두어서 트래픽을 분산을 하면 정상적으로 작동
하지만 DB가 각 서버에 분산되어 있어서 데이터의 동기화 문제 발생!!
서버와 DB를 분리하고 DB Sharding기법을 사용
하지만 클라이언트가 모든 서버의 주소를 알 필요가 없으니
Nginx를 두어 리버스 프록시(Reverse Proxy)의 역할을 함
Nginx는 로드 밸런싱을 수행하여 여러 대의 서버로 들어오는 트래픽을 효과적으로 분산시키는 역할을 하기 때문에 사용합니다.
Aws에 Nginx서버 구축하기
Nginx를 리버스 프록시로 설정하기
1
sudo nano /etc/nginx/nginx.conf
Nginx 설정 파일 열기
1
2
3
4
5
6
7
8
9
10
11
12
13
server {
listen 80;
server_name main.project.com; # 도메인 또는 IP 주소로 변경
location / {
proxy_pass http://13.209.92.9/; # 실제로 동작 중인 서버의 주소와 포트로 변경
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
클라이언트가 main.project.com으로 요청하면
서버에서 실행되고 있는 http://13.209.92.9/으로 요청을 대신 보내줍니다.
HTTP에서 HTTPS로의 리다이렉션
클라이언트가 http://main.project.com과 같이 80번 포트로 HTTP로 접속을 시도합니다.
Nginx는 80번 포트에서 들어온 HTTP 요청을 받아들입니다.
Nginx 설정에는 80번 포트로 들어온 요청을 HTTPS로 리다이렉트하는 설정이 있습니다.
Nginx는 해당 요청을 HTTPS로 리다이렉트하고, 리다이렉트된 요청을 443번 포트로 보내서 Node.js 서버로 전달합니다.
1
2
sudo nginx -t # 구성 파일 확인
sudo systemctl restart nginx # Nginx 재시작
끝!
This post is licensed under CC BY 4.0 by the author.