Nginx 정적 파일 캐싱 전략
·
Nginx
Nginx 정적 파일 캐싱 전략정적 파일은 브라우저 캐싱을 활용하면 성능을 크게 개선할 수 있다.주요 헤더 설명Cache-Control: 캐싱의 동작 방식을 결정하는 가장 중요한 헤더 (max-age, no-cache, public/private 등)Expires: 파일의 만료 날짜를 절대 시간으로 지정 (Cache-Control의 max-age가 우선순위가 더 높음)ETag / Last-Modified: 파일의 버전이나 수정 시간을 나타내며, 캐시 만료 후 재검증(Validation) 시 사용 cache-controladd_header Cache-Control "public";expires 설정location /static/ { expires 30d;} 설정 예시A. 기본적인 만료 시간 설정가장 ..
Nginx 리버스 프록시 캐싱
·
Nginx
Nginx 리버스 프록시 캐싱Nginx 리버스 프록시 캐시는 서버 부하를 획기적으로 줄이고 사용자 응답 속도를 개선하는 강력한 기능.백엔드 서버로 매번 요청을 보내는 대신, Nginx가 응답 결과를 저장해 두었다가 동일한 요청에 대해 즉시 답변을 내어주는 방식. 캐시 저장소 설정캐시 데이터를 물리적으로 저장할 경로와 관리 방식을 정의하는 설정. 해당 설정은 http 블록 내에 위치해야 함.http { proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;}levels=1:2: 캐시 파일이 한 폴더에 쌓이지 않도록 계층 구조로 저장하는 방식.keys_zon..
Nginx Rate Limit 설정
·
Nginx
Nginx Rate Limit 설정API abuse와 봇 트래픽을 제한할 때 rate limit 기능을 사용할 수 있다.rate limit zonelimit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;location 적용location /api/ { limit_req zone=api_limit burst=20;}정리rate limit은 트래픽 제어 기능이다API 서버 보호에 매우 유용하다
Nginx gzip 압축
·
Nginx
Nginx gzip 압축gzip은 HTTP 응답 데이터를 압축하여 전송량을 줄인다.gzip 활성화gzip on;압축 타입 설정gzip_types text/plain text/css application/json application/javascript;압축 레벨gzip_comp_level 5;정리gzip은 트래픽을 줄이고 페이지 로딩 속도를 개선한다텍스트 기반 응답에 적용하는 것이 효과적이다
Nginx 성능 최적화
·
Nginx
Nginx 성능 최적화nginx는 몇 가지 설정만으로 성능을 크게 개선할 수 있다.worker_processesworker_processes auto;CPU 코어 수에 맞게 worker를 생성한다.worker_connectionsworker_connections 4096;동시 연결 수를 결정한다.sendfilesendfile on;파일 전송 성능을 개선한다.keepalivekeepalive_timeout 65;TCP 연결을 재사용한다.정리worker 설정은 서버 처리량에 영향을 준다sendfile과 keepalive는 네트워크 성능을 개선한다
Nginx location 동작 방식
·
Nginx
Nginx location 동작 방식Nginx 설정에서 가장 많이 사용하는 영역인 location은 요청 URI에 따라 처리 방식을 결정한다.location 기본 형태location / { root /var/www/html;}location 우선순위nginx는 다음 순서로 location을 평가한다.exact matchprefix matchregex matchlongest prefixexact matchlocation = /test완전히 동일한 경로만 매칭된다.prefix matchlocation /api/api로 시작하는 모든 요청을 처리한다.regex matchlocation ~ \.php$정규식을 이용한 매칭이다.SPA 애플리케이션 예시React 같은 SPA에서는 다음과 같이 설정한다.loca..
Nginx Config 예시
·
Nginx
Nginx Config 예시실제 서비스에서는 다양한 형태의 nginx 구성이 사용된다.Node 서버 proxyserver { listen 80; location / { proxy_pass http://127.0.0.1:3000; }}Laravel + php-fpmlocation ~ \.php$ { fastcgi_pass unix:/run/php/php8.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}React SPAlocation / { try_files $uri /index.html;}정리nginx는 다양한 애플리케이션 앞단에서 동작한다Node, PHP, SPA 환경..
Nginx Upstream Load Balancing 설정
·
Nginx
Nginx Upstream Load Balancing 설정nginx는 여러 backend 서버에 트래픽을 분산할 수 있다.upstream 정의upstream backend { server 127.0.0.1:8000; server 127.0.0.1:8001;}proxy 연결location / { proxy_pass http://backend;}로드밸런싱 방식round robin기본 방식이다.least_connleast_conn;연결 수가 적은 서버로 요청을 전달한다.ip_haship_hash;같은 client IP는 동일한 서버로 전달된다.정리upstream은 backend 서버 그룹이다nginx는 다양한 로드밸런싱 전략을 지원한다서비스 확장에 필수적인 기능이다
Nginx Reverse Proxy 설정
·
Nginx
Nginx Reverse Proxy 설정reverse proxy는 클라이언트 요청을 받아 backend 서버로 전달하는 역할을 한다.기본 reverse proxy 설정location / { proxy_pass http://backend;}header 전달backend 서버에서 실제 클라이언트 정보를 알 수 있도록 header를 전달해야 한다.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 timeout 설정proxy_connect_timeout 60s;proxy_read_timeout 60s;backend 응답..
Nginx 설정 구조 이해하기
·
Nginx
Nginx 설정 구조 이해하기Nginx 설정은 크게 Core(Main) 영역, Events 영역, HTTP 영역으로 나뉘며, HTTP 영역 내부에 Server와 Location 블록이 중첩되는 구조 nginx.conf 전체 구조nginx 설정은 다음과 같은 계층 구조로 이루어진다.각 영역을 context라고 부르며 지시어(directive)는 특정 context에서만 사용할 수 있다.main ├─ events └─ http ├─ upstream └─ server └─ location MainNginx 프로세스의 실행 권한, 로그 경로, 워커 프로세스 수 등 시스템 전반에 영향을 미치는 최상위 설정 영역user nginx;worker_processes auto;error..