Zeno ZENO
Docker / Docker-Basic · 조회 2 · 좋아요 0

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. 웹 요청은 어떻게 들어올까?

사용자는 브라우저에서 웹사이트에 접속한다.

브라우저

↓

웹 서버

↓

애플리케이션

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 정리

Nginx
=
웹 서버

PHP-FPM
=
PHP 실행기

Laravel
=
PHP 애플리케이션

MySQL
=
데이터베이스

브라우저 요청
=
Nginx → PHP-FPM → Laravel → MySQL

다음 Part에서는 Docker 이미지 빌드에서 자주 사용하는 Multi-stage Build를 알아본다.

AD

제휴 광고

일부 링크는 제휴 링크이며, 구매 또는 가입 시 일정 수수료를 받을 수 있습니다.

AD

'Docker-Basic' 카테고리의 다른 글

전체보기