[Infra] 웹 서버 & 리버스 프록시 (Nginx) 기초개념 찍먹~

2025. 12. 3. 23:06·공부일기../Infra

1. 개요 및 역할 (Concept & Role)

Nginx(엔진엑스)는 경량화된 고성능 Web Server이다. Java 기반의 WAS(Jeus, Tomcat) 앞단에 배치하여 Reverse Proxy 역할을 수행하는 것이 표준 아키텍처이다.

  • 리버스 프록시 (Reverse Proxy): 외부 클라이언트의 요청을 받아 내부의 WAS로 전달한다. 보안상의 이유로 내부 WAS(8080 포트 등)를 직접 노출하지 않기 위해 사용한다.
  • 로드 밸런싱 (Load Balancing): 트래픽이 많을 경우 여러 대의 WAS로 부하를 분산한다. (L7 스위치 역할 수행)
  • 정적 파일 처리 (Static Content): HTML, CSS, Image 등 단순 파일 요청은 WAS를 거치지 않고 Nginx가 직접 처리하여 성능을 최적화한다.

 

2. 아키텍처 흐름 (Architecture Flow)

일반적인 웹 서비스의 요청 처리 순서는 다음과 같다.

  1. Client (User): 브라우저에서 도메인(80 또는 443 포트)으로 접속.
  2. Nginx (Web Server): 요청을 수신하여 설정된 규칙에 따라 내부 네트워크로 전달.
  3. WAS (Jeus/Tomcat): Nginx로부터 요청을 받아 비즈니스 로직(Java) 실행 및 DB 조회 후 응답.

 

3. 설정 파일 구성 (nginx.conf)

Nginx의 핵심 설정은 /etc/nginx/nginx.conf 또는 /etc/nginx/conf.d/default.conf에서 관리한다.

  • 주요 설정 예시 (Reverse Proxy):
server {
    listen 80;                 # 1. 서비스 포트 (HTTP)
    server_name example.com;   # 2. 도메인 명

    location / {
        # 3. WAS 연결 설정 (가장 중요)
        proxy_pass http://localhost:8080;  

        # 4. 헤더 포워딩 (Client IP 보존)
        # Nginx를 거치면 Client IP가 Nginx IP로 바뀌므로, 원본 IP를 헤더에 담아 보내야 함.
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
    }
}

 

4. 운영 및 관리 명령어

설정 변경 후 적용하거나 상태를 확인할 때 사용하는 명령어이다.

  • 상태 확인: systemctl status nginx
  • 재시작 (설정 적용): systemctl restart nginx
  • 설정 문법 검사: nginx -t
    • Tip: restart 전에 반드시 nginx -t를 수행하여 설정 파일(conf)에 오타가 없는지 확인해야 서버 다운을 방지할 수 있다.

 

5. 로그 관리 (Log Management)

문제 발생 시 WAS 로그(catalina.out)를 보기 전에 Nginx 로그를 먼저 확인하여 요청이 서버까지 도달했는지 판단한다.

  • 접속 로그 (Access Log): /var/log/nginx/access.log (누가 언제 접속했는지 기록)
  • 에러 로그 (Error Log): /var/log/nginx/error.log (Nginx 자체 오류 또는 WAS 연결 실패 기록)
    • Case: 502 Bad Gateway 에러가 뜬다면 Nginx는 살아있으나 뒷단의 WAS(Jeus/Tomcat)가 죽어있는 상태이다.

'공부일기.. > Infra' 카테고리의 다른 글

[인터넷 통신] http 기본개념 전반적인 내용 찍먹  (0) 2025.12.21
[Infra] 서버/인프라 배포 기초개념  (1) 2025.11.29
'공부일기../Infra' 카테고리의 다른 글
  • [인터넷 통신] http 기본개념 전반적인 내용 찍먹
  • [Infra] 서버/인프라 배포 기초개념
s0-0mzzang
s0-0mzzang
공부한것을 기록합니다...
  • s0-0mzzang
    승민이의..개발일기..🐰
    s0-0mzzang
  • 전체
    오늘
    어제
    • 전체~ (108)
      • 마음가짐..! (10)
      • 공부일기.. (76)
        • weekly-log (6)
        • Spring (19)
        • Java (18)
        • DataBase (10)
        • git (2)
        • JPA (6)
        • kafka (1)
        • Backend Architecture (3)
        • Troubleshooting (삽질..ㅋ) (2)
        • Cloud (1)
        • Docker (2)
        • 알고리즘 (1)
        • 리액트 (2)
        • Infra (3)
      • 하루일기.. (22)
        • 그림일기 (8)
        • 생각일기 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    MySQL
    ADC 환경
    인프라 기초
    spring boot
    리팩토링
    자바
    SpringBoot
    스프링부트
    swagger
    TDD
    항해99
    BufferedReader
    항해플러스
    spring
    React
    StringTokenizer
    JPA
    Paging
    다짐
    ERD
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
s0-0mzzang
[Infra] 웹 서버 & 리버스 프록시 (Nginx) 기초개념 찍먹~
상단으로

티스토리툴바