Part 22. PHP-FPM과 Nginx 구조 이해하기
이번 글에서는 Laravel Docker 환경에서 자주 사용하는 PHP-FPM과 Nginx 구조를 알아본다. Nginx는 웹 요청을 받고, PHP-FPM은 PHP 코드를 실행하는 역할을 담당한다.
Part 22. PHP-FPM과 Nginx 구조 이해하기
1. 이번 Part 목표
지금까지는 Docker, MySQL, Volume, Compose, Migration을 알아보았다.
이번 Part에서는 Laravel Docker 환경에서 자주 등장하는 PHP-FPM과 Nginx 구조를 이해한다.
2. 웹 요청은 어떻게 들어올까?
AD
제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다
사용자는 브라우저에서 웹사이트에 접속한다.
브라우저
↓
웹 서버
↓
애플리케이션
Laravel도 결국 브라우저 요청을 받아 처리하는 웹 애플리케이션이다.
3. Nginx란?
Nginx는 웹 서버다.
브라우저에서 들어온 요청을 가장 먼저 받는다.
브라우저
↓
Nginx
Nginx는 정적 파일을 직접 응답하거나, PHP 처리가 필요한 요청을 PHP-FPM으로 전달한다.
4. 정적 파일이란?
정적 파일은 서버에서 계산하지 않아도 바로 줄 수 있는 파일이다.
CSS
JavaScript
이미지
폰트
이런 파일은 Nginx가 직접 처리할 수 있다.
5. PHP 파일은 다르다
PHP 파일은 그냥 파일을 그대로 보내면 안 된다.
PHP 코드는 실행되어야 한다.
index.php
↓
PHP 실행
↓
HTML 생성
↓
브라우저 응답
6. PHP-FPM이란?
PHP-FPM은 PHP 코드를 실행하는 프로그램이다.
Nginx는 PHP를 직접 실행하지 않는다.
PHP 실행은 PHP-FPM이 담당한다.
7. 역할 분리
Nginx
=
요청 받기
PHP-FPM
=
PHP 실행
Laravel
=
애플리케이션 로직 처리
8. 전체 흐름
AD
제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다
화물차리스 전문 화물박사 - 1톤트럭, 특장차 즉시출고
화물차 리스 전문 화물박사
브라우저
↓
Nginx
↓
PHP-FPM
↓
Laravel
↓
MySQL
Laravel이 DB가 필요하면 MySQL과 통신한다.
9. 왜 Nginx와 PHP-FPM을 나눌까?
역할이 다르기 때문이다.
Nginx는 웹 요청 처리에 강하다.
PHP-FPM은 PHP 코드 실행을 담당한다.
각자 잘하는 일을 나눠 맡는 구조다.
10. Laravel Docker에서 자주 보이는 구조
app
=
PHP-FPM + Laravel
nginx
=
웹 서버
db
=
MySQL
프로젝트에 따라 app 컨테이너 안에 Nginx와 PHP-FPM을 같이 넣기도 하고, 따로 분리하기도 한다.
11. 하나의 컨테이너에 같이 넣는 경우
container
├─ nginx
└─ php-fpm
작은 프로젝트나 단순 배포에서는 하나의 컨테이너 안에 같이 넣을 수 있다.
12. 컨테이너를 분리하는 경우
nginx container
php-fpm container
mysql container
역할을 더 명확히 나누고 싶을 때 분리한다.
13. Docker Compose에서는?
services:
app:
nginx:
db:
이런 식으로 여러 서비스를 구성할 수 있다.
14. Part 22 정리
AD
제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다
Nginx
=
웹 서버
PHP-FPM
=
PHP 실행기
Laravel
=
PHP 애플리케이션
MySQL
=
데이터베이스
브라우저 요청
=
Nginx → PHP-FPM → Laravel → MySQL
다음 Part에서는 Docker 이미지 빌드에서 자주 사용하는 Multi-stage Build를 알아본다.
AD
제휴 광고
일부 링크는 제휴 링크이며, 구매 또는 가입 시 일정 수수료를 받을 수 있습니다.
AD







