라이트세일 ‘Nginx 리버스 프록시’ 인스턴스 추가로 적용하는 방법

라이트세일에서 워드프레스를 운영하면서 이번에 리버스 프록시 적용을 알아보고, 기존 서버에 설치하는 대신 별도의 인스턴스를 추가하여 Nginx 리버스 프록시를 적용하기로 결정했습니다.

인스턴스를 추가하는 이유는, 기존 서버에 리버스 프록시를 설치하는 방식으로는 TTFB 개선 효과가 크지 않기 때문입니다. 먼저 리버스 프록시가 무엇이며, 어떤 이점을 제공하는지 알아보겠습니다.

  • 부하 분산: 리버스 프록시는 여러 백엔드 서버로 들어오는 요청을 분산시켜 서버 과부하를 방지합니다. 이를 통해 트래픽이 많은 사이트에서도 안정적인 서비스가 가능합니다.
  • 보안 강화: 외부 사용자는 직접 백엔드 서버에 접근할 수 없고, 리버스 프록시를 통해서만 접속하므로 DDoS 공격이나 악성 요청으로부터 서버를 보호할 수 있습니다.
  • 캐싱과 성능 향상: 정적 콘텐츠나 자주 요청되는 데이터를 리버스 프록시에서 캐싱하면, 백엔드 서버 부담을 줄이고 TTFB(Time To First Byte)와 전체 응답 속도를 개선할 수 있습니다.
  • SSL 종료: 리버스 프록시에서 SSL을 처리하면, 백엔드 서버는 암호화 부담 없이 HTTP로 요청을 처리할 수 있어 서버 성능이 향상됩니다.
  • 유연한 라우팅: 요청 경로에 따라 특정 서버로 트래픽을 분기할 수 있어, 서비스 구조를 유연하게 구성하거나 테스트 환경과 운영 환경을 분리하는 데 유리합니다.
  • 모니터링 및 로깅: 모든 요청이 리버스 프록시를 거치므로 트래픽 분석과 로그 기록을 중앙화할 수 있어, 서버 운영과 문제 진단이 용이합니다.

리버스 프록시는 서버 앞단에 위치하여 캐싱과 보안 등의 처리를 미리 수행하기 때문에, 원본 서버의 부하를 줄여 TTFB를 개선할 수 있습니다. 즉, 리버스 프록시 → 원본 서버 구조로 진행됩니다.

이제 인스턴스를 추가하여 Nginx 리버스 프록시를 구성하는 방법에 대해 살펴보겠습니다.

인스턴스 생성(리버스 프록시용)

Nginx 리버스 프록시
Nginx 리버스 프록시
  1. AWS Lightsail 콘솔 접속에 접속한 후에 인스턴스 생성
  2. 플랫폼: Linux/Unix
  3. Ubuntu 22.04 LTS(또는 24.04)
  4. 이름 예시: proxy-greenblog
  5. 생성 후 고정 IP(Static IP) 할당

방화벽 규칙 추가

Nginx 리버스 프록시

인스턴스를 생성하고 고정 IP를 연결했다면, IPv4 방화벽에서 포트를 개방해야 합니다. 위에 보이는 것처럼 SSH, HTTP, HTTPS 규칙을 추가하면 됩니다.

Nginx 설치

Nginx 리버스 프록시

인스턴스를 생성했다면 Nginx 리버스 프록시를 설치해야 합니다. 인스턴스에 접속하려면, 연결 메뉴에서 SSH를 사용하여 연결을 클릭하면 됩니다.

sudo apt update
sudo apt install nginx -y

설치 확인

nginx -v
# nginx version: nginx/1.24.0 (또는 최신 버전)

기본 설정 파일 테스트

sudo nginx -t
sudo systemctl enable nginx
sudo systemctl start nginx

브라우저에서 http://<proxy서버IP> 접속 시 Welcome to Nginx! 페이지가 보이면 성공입니다.

DNS 설정

typehostvalue설명
Aproxy리버스 프록시 IP리버스 프록시 서버
Awww리버스 프록시 IP프록시를 통해 접속하도록 설정
A @원본 서버 IP원본
A *리버스 프록시 IP모든 서브 도메인 프록시 처리(선택)

라이트세일 왼쪽 메뉴에서 도메인 및 DNS → DNS 영역 → DNS 레코드로 이동하여 DNS를 수정해야 합니다. DNS를 수정하는 이유는 사용자가 처음 접속할 때 리버스 프록시를 통해 연결되도록 하기 위함입니다.

SSL 인증서 발급(Let’s Encrypt)

nginx 리버스 프록시 서버 SSH를 사용하여 연결 실행

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d proxy.greenblog.co.kr -d www.greenblog.co.kr

성공시 인증서 경로

/etc/letsencrypt/live/proxy.greenblog.co.kr/

자동 갱신 테스트

sudo certbot renew --dry-run

Nginx 리버스 프록시+캐시 설정

설정 파일 생성

sudo nano /etc/nginx/sites-available/greenblog.conf

아래 내용 입력


server {
    listen 80;
    server_name proxy.greenblog.co.kr www.greenblog.co.kr;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name proxy.greenblog.co.kr www.greenblog.co.kr;

    ssl_certificate /etc/letsencrypt/live/proxy.greenblog.co.kr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/proxy.greenblog.co.kr/privkey.pem;

        proxy_cache_path /var/cache/nginx/greenblog levels=1:2 keys_zone=greenblog_cache:100m inactive=60m max_size=1g;

    location / {
        proxy_pass https://greenblog.co.kr;
        proxy_set_header Host greenblog.co.kr;
        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;

        
        proxy_cache greenblog_cache;
        proxy_cache_valid 200 301 302 10m;
        proxy_cache_valid 404 1m;
        proxy_cache_bypass $http_cache_control;
        add_header X-Cache-Status $upstream_cache_status;
    }
}

여기서 proxy.greenblog.co.kr, 인증서 경로, proxy_pass, proxy_set_header Host 부분의 도메인은 자신이 설정한 도메인으로 입력하고 추가해야 합니다.

만약 Host greenblog.co.kr 부분에서 문제가 발생하면, 원본 서버의 고정 IP 주소로 변경하면 작동할 수 있습니다.

저장 후 적용

sudo ln -s /etc/nginx/sites-available/greenblog.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

캐시 작동 확인

curl -I https://www.greenblog.co.kr/

결과 예시

HTTP/2 200 
X-Cache-Status: MISS

첫 요청(캐시 생성)

다시 실행 시

HTTP/2 200 
X-Cache-Status: HIT

캐시 작동 중

Openlitespeed 원본 서버 확인

원본 서버에서는 다음을 확인합니다.

  • LiteSpeed Cache 플러그인 활성화
  • Cache-Control 헤더가 정상적으로 반환되는지 확인
curl -I https://greenblog.co.kr/

Cache-control: public, max-age=…. 가 있어야 프록시 캐시도 함께 작동합니다.

TTFB 속도 비교 테스트

# 원본 서버
curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s\n" https://greenblog.co.kr/

# 리버스 프록시 서버
curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s\n" https://www.greenblog.co.kr/

TTFB가 약 20~40% 단축되면 캐시 및 프록시 구조가 정상적으로 작동 중입니다.

캐시 관리 명령

캐시 폴더 확인

sudo du -sh /var/cache/nginx/greenblog/

캐시 삭제(무효화)

sudo rm -rf /var/cache/nginx/greenblog/*

로그 확인

sudo tail -f /var/log/nginx/access.log

최종 구조 요약

greenblog.co.kr원본(openlitespeed)
proxy.greenblog.co.kr리버스 프록시 + SSL 발급용
www.greenblog.co.kr실제 접속용(리버스 프록시 거침)
  • CDN 없이도 캐시된 콘텐츠는 Nginx에서 직접 응답
  • TTFB 단축
  • Openlitespeed 원본 부하 감소

nginx 리버스 프록시는 서버 부하 감소, 캐싱, 보안 강화, TTFB 개선 등 여러 이점이 있어 적용을 원하는 분들이 많습니다. 위 설명을 참고하여 설치를 시도해 보시기 바랍니다.

다만, 설명은 제 환경에 맞춰 진행한 것이므로 다른 환경에서는 설치 과정이 다르게 적용될 수 있습니다. 따라서 위 내용을 대략적인 nginx 리버스 프록시 설치 과정 참고 자료로 활용하시기 바랍니다.

▶ 캐시 플러그인 ‘LiteSpeed’ 기본 설정하는 방법 정리

▶ QUIC.cloud ‘Reverse Proxy’ 적용하기 위한 DNS 설정 방법

▶ LiteSpeed Cache CDN (QUIC.cloud) 워드프레스에 적용하는 방법

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤