안녕하세요! 오늘은 현대 웹 아키텍처의 핵심 요소인 Nginx에 대해 자세히 알아보겠습니다.
Nginx가 뭔가요? 🤔
커피숍을 상상해보세요:
- 손님들(클라이언트)이 주문(요청)을 하면
- 매장 직원(Nginx)이 효율적으로 주문을 처리하고 분배합니다
- 이때 직원은 주방(백엔드 서버)에 부하가 걸리지 않도록 똑똑하게 일을 분배하죠!
Nginx는 바로 이런 역할을 하는 웹 서버/리버스 프록시 서버입니다.
주요 특징 ⭐
1. 이벤트 기반 아키텍처
전통적 서버: 손님 1명당 직원 1명 배정
Nginx: 한 명의 직원이 여러 손님 응대 가능!
2. 비동기 처리
events {
worker_connections 1024; # 동시 처리 가능한 연결 수
}
3. 가벼운 리소스 사용
- Apache 대비 메모리 사용량 40% 절감
- CPU 사용률도 현저히 낮음
주요 기능 🛠
1. 정적 파일 서빙
location /images/ {
root /var/www/static;
expires 30d; # 브라우저 캐싱 30일
}
2. 로드 밸런싱
upstream backend {
server backend1.example.com:8080;
server backend2.example.com:8080;
server backend3.example.com:8080;
}
3. SSL/TLS 터미네이션
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
}
4. URL 리라이팅
location /old-page {
rewrite ^/old-page(.*)$ /new-page$1 permanent;
}
실전 설정 예시 💻
기본 웹 서버 설정
http {
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html;
}
# gzip 압축 활성화
gzip on;
gzip_types text/plain text/css application/json;
# 에러 페이지
error_page 404 /404.html;
}
}
API 리버스 프록시 설정
location /api/ {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
성능 최적화 팁 🔧
워커 프로세스 최적화
worker_processes auto; worker_rlimit_nofile 65535;
버퍼 설정
client_body_buffer_size 10K; client_max_body_size 8m;
캐싱 설정
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m;
주의사항 ⚠️
설정 파일 문법
- 세미콜론(;) 누락 주의
- 중괄호({}) 짝 맞추기
보안 설정
- 버전 정보 숨기기
- 불필요한 HTTP 메소드 차단
로그 관리
- 로그 로테이션 설정
- 적절한 로그 레벨 설정
마치며 🎁
Nginx는 현대 웹 서비스에서 없어서는 안 될 중요한 도구입니다. 적절한 설정만으로도 서비스의 성능과 안정성을 크게 향상시킬 수 있죠!
참고자료:
- Nginx 공식 문서: https://nginx.org/en/docs/
- Nginx Blog: https://www.nginx.com/blog/
- DigitalOcean Nginx 가이드: https://www.digitalocean.com/community/tutorials?q=nginx
728x90
'100===Dev Ops > Nginx' 카테고리의 다른 글
리버스 프록시 (Reverse Proxy) 완벽 가이드 🌐 (0) | 2024.11.17 |
---|---|
Reverse Proxy Introduced (0) | 2024.05.27 |
Nginx Introduced (0) | 2024.05.26 |
Nginx CheatSheet (0) | 2024.05.25 |