항해14기 본과정/항해14기 개발일지

[항해 14기] 개발일지45 (실전프로젝트 - Nginx)

스쿼트잘함 2023. 5. 28. 14:46

실전프로젝트 - 2주차

- 회의 없음

 

1. 작업 내역

1) Nginx

- 트래픽이 많은 웹사이트의 서버(WAS)를 도와주는 비동기 이벤트 기반구조의 경량화 웹 서버 프로그램

- 정적 파일을 응답해주는 HTTP Web Server로 활용되기도 하고, 또는 Reverse Proxy Server로 활용하여 WAS의 부하를 줄일 수 있는 로드밸런서 역할도 함

- 동시에 많은 연결을 처리할 수 있는 다중 스레드 아키텍처와 이벤트 기반 구조 가짐. 대규모 트래픽 처리에 적합

- 가벼우면서 확장성이 뛰어나 많은 웹 서비스에서 빠르고 안정적인 성능을 제공
- 동적 콘텐츠를 처리하기 위한 FastCGI, 스트리밍을 위한 RTMP, 보안 기능을 위한 SSL/TLS 등 다양한 기능을 제공

 

2) Apache와 비교

- 아파치는 다양한 모듈, 많은 레퍼런스, 동적 컨텐츠에 대한 처리 속도, 오래된 역사로 인한 호환성의 장점을 가지고 있음

- 그 외 대부분의 요소는 nignx가 앞서고 node.js의 구조와도 비슷하여 nginx 선택

- 특히 대용량 트래픽 처리에 대한 속도에서 매우 차이가 남

 

3) ubuntu 20.04에 세팅

- 참조 사이트 : https://ko.linux-console.net/?p=721#gsc.tab=0

- 동작 확인 : sudo systemctl status nginx

 

4) 이후 사용중인 도메인과 연결

- 서버블록 구성(nginx.conf에 직접(전역설정) 또는 sites-available(도메인마다 따로설정)

server {
    listen 80;
    server_name your_domain.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

 

5) 자주쓰는 명령어

- sudo systemctl status nginx
- sudo systemctl stop nginx
- sudo systemctl start nginx
- sudo service nginx restart
- sudo lsof -i :80
- sudo tail -n 10 /var/log/nginx/error.log
- sudo tail -f /var/log/nginx/access.log

 

 

2. 트러블슈팅/회고

1) nginx를 통해 리버스 프록시 세팅이 가능해짐

- 추후 작성 예정