From bb28e68847d6fcf7b5c971ffbe6ca6bfdd21b565 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Sun, 22 Feb 2026 22:14:02 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20[guides]=20Nginx=20&=20FastCGI=20?= =?UTF-8?q?=EC=B4=88=EB=B3=B4=EC=9E=90=20=EA=B0=80=EC=9D=B4=EB=93=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Nginx 개념 (웹서버, 리버스 프록시, SSL 종료) - FastCGI 프로토콜 (CGI→FastCGI 발전, 바이너리 프로토콜) - nginx.conf 설정 해부 (try_files, fastcgi_pass, SCRIPT_FILENAME) - SAM 2계층 Nginx 구조 및 도메인별 라우팅 - FastCGI vs HTTP 프록시 비교 - PPTX 프레젠테이션 포함 --- INDEX.md | 1 + guides/nginx-fastcgi-guide.md | 260 ++++++++++++++++++++++++++++++++ guides/nginx-fastcgi-guide.pptx | Bin 0 -> 327602 bytes 3 files changed, 261 insertions(+) create mode 100644 guides/nginx-fastcgi-guide.md create mode 100644 guides/nginx-fastcgi-guide.pptx diff --git a/INDEX.md b/INDEX.md index a0e650c..a572f3d 100644 --- a/INDEX.md +++ b/INDEX.md @@ -105,6 +105,7 @@ docs/ | [production-env-sync.md](guides/production-env-sync.md) | 운영 전환 시 .env 동기화 절차 | 테스트→운영 전환 시 | | [server-how-it-works.md](guides/server-how-it-works.md) | 서버 동작 원리 초보자 가이드 | 신규 합류 시 | | [php-fpm-guide.md](guides/php-fpm-guide.md) | PHP-FPM 초보자 가이드 | PHP-FPM 개념 이해 시 | +| [nginx-fastcgi-guide.md](guides/nginx-fastcgi-guide.md) | Nginx & FastCGI 초보자 가이드 | Nginx/FastCGI 개념 이해 시 | | [jenkins-setup-guide.md](guides/jenkins-setup-guide.md) | Jenkins CI/CD 셋업 가이드 | Jenkins 설치/설정 시 | ### quickstart/ - 빠른 시작 diff --git a/guides/nginx-fastcgi-guide.md b/guides/nginx-fastcgi-guide.md new file mode 100644 index 0000000..ad93cca --- /dev/null +++ b/guides/nginx-fastcgi-guide.md @@ -0,0 +1,260 @@ +# Nginx & FastCGI 초보자 가이드 + +> **작성일**: 2026-02-22 +> **대상**: SAM 프로젝트에 새로 합류한 개발자 + +--- + +## 1. 개요 + +### 1.1 이 문서의 목적 + +"Nginx가 뭐지?", "FastCGI가 뭐지?" — 이 두 질문에 답하는 문서다. +[서버 동작 원리 가이드](server-how-it-works.md)와 [PHP-FPM 가이드](php-fpm-guide.md)에서 간략히 언급한 내용을 **깊이 파고든다**. + +### 1.2 핵심 한 줄 정리 + +- **Nginx** = 요청을 받아서 적절한 곳에 전달하는 **교통 경찰** +- **FastCGI** = Nginx와 PHP-FPM이 대화하는 **통신 규약(프로토콜)** + +--- + +## 2. Nginx란? + +### 2.1 웹서버가 하는 일 + +웹서버는 브라우저의 요청을 받아서 응답을 돌려주는 프로그램이다. + +``` +브라우저: "index.html 주세요" +웹서버: "여기 있습니다" (파일 내용 전송) +``` + +### 2.2 Nginx의 정체 + +Nginx(엔진엑스)는 **고성능 웹서버이자 리버스 프록시**다. 2004년 러시아 개발자 이고르 시소예프가 만들었다. + +**비유**: 대형 호텔의 프런트 데스크 + +``` +┌─────────────────────────────────────────────┐ +│ Nginx (프런트 데스크) │ +│ │ +│ 손님(브라우저)이 오면: │ +│ │ +│ "이미지 주세요" → 직접 서빙 (정적 파일) │ +│ "PHP 실행해줘" → PHP-FPM에 전달 (FastCGI) │ +│ "React 페이지" → Node.js에 전달 (프록시) │ +│ "API 호출" → API 서버에 전달 (프록시) │ +└─────────────────────────────────────────────┘ +``` + +### 2.3 Nginx vs Apache + +| 항목 | Nginx | Apache | +|------|-------|--------| +| 아키텍처 | **이벤트 기반** (비동기) | 프로세스/스레드 기반 | +| 동시 접속 | 수만 개 가능 | 수천 개 수준 | +| 메모리 | 적게 사용 | 많이 사용 | +| 정적 파일 | **매우 빠름** | 보통 | +| PHP 실행 | 직접 불가 (FastCGI 필요) | mod_php로 직접 가능 | +| SAM에서 | **사용 중** | 사용 안 함 | + +**왜 SAM은 Nginx를 쓰는가**: 서버 스펙(2코어/3.8GB)이 제한적이므로, 적은 메모리로 5개 서비스를 동시 라우팅할 수 있는 Nginx가 적합하다. + +### 2.4 Nginx의 3가지 역할 + +``` +역할 1 — 정적 파일 서빙: logo.png → Nginx가 직접 전송 (PHP 개입 없음) +역할 2 — 리버스 프록시: PHP 요청 → PHP-FPM, React 요청 → Node.js +역할 3 — SSL 종료: HTTPS(암호화) → Nginx에서 해독 → 내부는 HTTP(평문) +``` + +--- + +## 3. FastCGI란? + +### 3.1 먼저 CGI를 이해하자 + +**CGI**(Common Gateway Interface)는 웹서버가 외부 프로그램을 실행하는 규약이다. 1993년에 만들어졌다. + +``` +브라우저 → 웹서버 → "PHP 프로그램을 실행해서 결과를 줘" + ↓ + [새 프로세스 생성] → PHP 실행 → 결과 → [프로세스 종료] +``` + +**문제**: 요청마다 프로세스를 새로 생성하고 종료한다. 100명이 동시에 접속하면 100개 프로세스가 생겼다 사라진다. **느리고 비효율적**이다. + +### 3.2 FastCGI가 해결한 것 + +**FastCGI**는 1996년에 CGI의 문제를 해결하기 위해 만들어졌다. 핵심 차이: + +``` +[CGI] 요청 → 프로세스 생성 → 실행 → 종료 → 요청 → 생성 → 실행 → 종료 +[FastCGI] 프로세스가 미리 떠 있음 → 요청 → 실행 → 대기 → 요청 → 실행 → 대기 +``` + +**비유**: CGI는 택시(매번 부르고 보냄), FastCGI는 전용 기사(항상 대기 중). + +### 3.3 FastCGI는 프로토콜이다 + +FastCGI는 프로그램이 아니라 **통신 규약(프로토콜)**이다. HTTP처럼 "이렇게 데이터를 주고받자"는 약속이다. + +``` +┌──────────┐ ┌──────────┐ +│ Nginx │ ── FastCGI 규약 ── │ PHP-FPM │ +│ (클라이언트) │ │ (서버) │ +└──────────┘ └──────────┘ +``` + +- HTTP: 브라우저와 웹서버 사이의 규약 +- **FastCGI**: 웹서버와 애플리케이션 서버 사이의 규약 +- 둘은 다른 프로토콜이다 (FastCGI는 바이너리, HTTP는 텍스트) + +### 3.4 FastCGI가 전달하는 정보 + +Nginx가 PHP-FPM에 보내는 주요 파라미터: + +| 파라미터 | 의미 | 예시 | +|---------|------|------| +| `SCRIPT_FILENAME` | 실행할 PHP 파일 | `/var/www/mng/public/index.php` | +| `REQUEST_METHOD` | HTTP 메서드 | `GET`, `POST` | +| `QUERY_STRING` | URL 파라미터 | `page=1&sort=name` | +| `HTTP_HOST` | 도메인 | `mng.sam.kr` | + +PHP에서 `$_SERVER['REQUEST_METHOD']`, `$_GET` 등으로 접근하는 값이 바로 이것이다. + +--- + +## 4. Nginx + FastCGI 동작 원리 + +### 4.1 전체 흐름 + +`https://mng.sam.kr/orders?page=2` 접속 시: + +``` +브라우저 →① HTTPS → Nginx(도메인 라우팅) →② try_files → index.php +→③ FastCGI → PHP-FPM(:9000) →④ Laravel → DB → HTML →⑤ 응답 역순 +``` + +### 4.2 Nginx 설정 해부 + +SAM의 MNG 설정에서 FastCGI 관련 부분: + +```nginx +# docker/nginx/nginx.conf (외부 Nginx — MNG 섹션) + +location / { + try_files $uri $uri/ /index.php?$query_string; + # ① ② ③ +} + +location ~ \.php$ { + include fastcgi_params; # ④ + fastcgi_pass mng:9000; # ⑤ + fastcgi_param SCRIPT_FILENAME /var/www/mng/public$fastcgi_script_name; # ⑥ + fastcgi_param PATH_INFO $fastcgi_path_info; # ⑦ + fastcgi_param HTTPS on; # ⑧ + fastcgi_read_timeout 300s; # ⑨ +} +``` + +**핵심 줄 해설**: + +- ①②③ `try_files`: 파일 있으면 직접 서빙, 없으면 `index.php`로 (Laravel 진입점) +- ⑤ `fastcgi_pass mng:9000`: **핵심! FastCGI 요청을 mng 컨테이너 9000번 포트로 전달** +- ⑥ `SCRIPT_FILENAME`: PHP-FPM이 실행할 파일의 절대 경로 +- ⑧ `HTTPS on`: PHP에서 HTTPS 요청으로 인식하도록 설정 +- ⑨ `fastcgi_read_timeout`: PHP 응답 대기 최대 300초 + +### 4.3 왜 index.php 하나로 모든 요청을 처리하는가 + +Laravel은 **프론트 컨트롤러 패턴**을 사용한다. `/orders`, `/users/123` 등 모든 URL이 `public/index.php`를 통과하고, Laravel 라우터가 적절한 컨트롤러로 분배한다. `try_files` 설정이 이를 가능하게 한다. + +--- + +## 5. SAM의 Nginx 구조 + +### 5.1 2계층 Nginx + +SAM은 Nginx가 **2단계**로 작동한다: + +``` +브라우저 → [1계층: 외부 Nginx (sam-nginx-1)] → SSL 종료 + 도메인 라우팅 + │ │ + ▼ ▼ + [2계층: sam-mng-1] [2계층: sam-api-1] + Nginx(:80) Nginx(:80) + ↓ FastCGI ↓ FastCGI + PHP-FPM(:9000) PHP-FPM(:9000) +``` + +### 5.2 도메인별 라우팅 정리 + +| 도메인 | 1계층(외부 Nginx) 동작 | 프로토콜 | +|--------|----------------------|---------| +| `mng.sam.kr` | `fastcgi_pass mng:9000` | **FastCGI** | +| `api.sam.kr` | `fastcgi_pass api:9000` | **FastCGI** | +| `dev.sam.kr` | `proxy_pass react:3000` | HTTP 프록시 | +| `sales.sam.kr` | `proxy_pass sales:80` | HTTP 프록시 | +| `5130.sam.kr` | `proxy_pass php73:80` | HTTP 프록시 | + +> **핵심**: PHP 서비스는 **FastCGI**로, Node.js/레거시 서비스는 **HTTP 프록시**로 연결한다. + +--- + +## 6. 자주 묻는 질문 + +### 6.1 "FastCGI와 HTTP 프록시의 차이는?" + +| 항목 | FastCGI | HTTP 프록시 | +|------|---------|-----------| +| 프로토콜 | 바이너리 (FastCGI) | 텍스트 (HTTP) | +| 용도 | PHP-FPM 등 CGI 호환 앱 | Node.js, 일반 웹서버 | +| Nginx 설정 | `fastcgi_pass` | `proxy_pass` | +| SAM에서 | MNG, API | React, Sales, 5130 | + +### 6.2 "try_files가 뭔가요?" + +Nginx가 파일을 찾는 순서를 지정한다: + +```nginx +try_files $uri $uri/ /index.php?$query_string; +``` + +1. `$uri` — `/orders.html` 파일이 있는가? → 없다 +2. `$uri/` — `/orders/` 디렉토리가 있는가? → 없다 +3. `/index.php?$query_string` — index.php로 넘긴다 (Laravel이 처리) + +### 6.3 "SCRIPT_FILENAME은 왜 설정하나?" + +PHP-FPM은 어떤 PHP 파일을 실행할지 알아야 한다. Nginx가 FastCGI 파라미터로 알려준다. + +```nginx +fastcgi_param SCRIPT_FILENAME /var/www/mng/public$fastcgi_script_name; +# /orders 요청 시 → /var/www/mng/public/index.php +``` + +이 설정이 잘못되면 "File not found" 에러가 발생한다. + +### 6.4 "502/504 에러가 나면?" + +| 에러 | 원인 | 대응 | +|------|------|------| +| **502 Bad Gateway** | PHP-FPM이 죽었거나 연결 불가 | `docker ps`, `docker logs` 확인 | +| **504 Gateway Timeout** | PHP 처리가 너무 오래 걸림 | `fastcgi_read_timeout` 증가 또는 코드 최적화 | + +--- + +## 관련 문서 + +| 문서 | 설명 | +|------|------| +| [server-how-it-works.md](server-how-it-works.md) | 서버 동작 원리 전체 가이드 | +| [php-fpm-guide.md](php-fpm-guide.md) | PHP-FPM 초보자 가이드 | +| [docker-setup.md](../specs/docker-setup.md) | Docker 환경 설정값 상세 | + +--- + +**최종 업데이트**: 2026-02-22 diff --git a/guides/nginx-fastcgi-guide.pptx b/guides/nginx-fastcgi-guide.pptx new file mode 100644 index 0000000000000000000000000000000000000000..625e7c4fd52413d34557318b1ac165a07734c313 GIT binary patch literal 327602 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 BpRWJ_ literal 0 HcmV?d00001