2025. 9. 29. 10:43ㆍ프로그램/PHP 고급
웹 서버의 역할과 PHP-FPM 연동

#웹_서버 (Web Server)는 클라이언트(브라우저)의 HTTP 요청을 받아들이고, 처리한 후 응답을 돌려주는 핵심 컴포넌트입니다. 현대의 PHP 환경에서 웹 서버는 PHP 코드를 직접 실행하지 않고, #PHP-FPM(FastCGI Process Manager)에 요청을 위임합니다. 웹 서버는 정적인 파일(HTML, CSS, 이미지)을 빠르게 처리하고, 동적인 PHP 요청만 PHP-FPM에 전달함으로써 #성능 을 극대화합니다. 🔗
1. Nginx 설정 (LEMP 스택)

#Nginx 는 가벼운 아키텍처와 높은 동시성 처리 능력으로 인해 현대의 #LEMP (Linux, Nginx, MySQL, PHP) 스택에서 가장 선호되는 웹 서버입니다.
Nginx 설치 (Ubuntu 기준)
sudo apt update
sudo apt install nginx
기본 설정 파일 (/etc/nginx/sites-available/default)
Nginx 설정의 핵심은 location 블록을 사용하여 요청을 분리하는 것입니다.
server {
listen 80;
server_name your_domain.com; # 도메인 이름 또는 IP 주소
root /var/www/html/my-project/public; # 프로젝트의 웹 루트 디렉터리
index index.php index.html;
# 1. 정적 파일 처리: 파일이 존재하면 직접 서빙
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# 2. PHP 요청 처리: PHP-FPM으로 전달
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# PHP-FPM 소켓 또는 TCP 주소로 요청 전달
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
# 또는 fastcgi_pass 127.0.0.1:9000;
}
# 3. .htaccess와 같은 숨김 파일 접근 차단
location ~ /\. {
deny all;
}
}
- root: PHP 애플리케이션의 #웹_루트_디렉터리 를 정확히 지정해야 합니다. (예: Laravel, Symfony 등은 보통 public 폴더가 루트입니다.)
- location ~ \.php$: .php로 끝나는 모든 요청을 PHP-FPM으로 전달합니다.
- fastcgi_pass: PHP-FPM의 #소켓 경로 또는 IP 주소와 포트(기본 9000번)를 지정하여 연동합니다.
2. Apache 설정 (LAMP 스택)

#Apache 는 모듈 기반의 유연성과 광범위한 호환성 덕분에 여전히 널리 사용됩니다. PHP-FPM과 연동하기 위해서는 mod_proxy_fcgi 모듈을 사용합니다.
Apache 설치 (Ubuntu 기준)
sudo apt update
sudo apt install apache2
PHP-FPM 연동 모듈 활성화
sudo a2enmod proxy proxy_fcgi
가상 호스트 설정 파일 (/etc/apache2/sites-available/000-default.conf)
ProxyPassMatch 지시자를 사용하여 PHP 요청을 PHP-FPM 소켓으로 전달합니다.
<VirtualHost *:80>
ServerName your_domain.com
DocumentRoot /var/www/html/my-project/public
<Directory /var/www/html/my-project/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# PHP-FPM 연동 설정
# .php 파일에 대한 요청을 PHP-FPM 소켓으로 전달
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost/"
</FilesMatch>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
- AllowOverride All: .htaccess 파일 사용을 허용합니다.
- SetHandler: PHP-FPM 소켓 경로를 지정하여 요청을 위임합니다.
3. 웹 서버 서비스 관리

어떤 웹 서버를 사용하든, 설정 파일을 변경한 후에는 반드시 서비스를 **재시작(Restart)**해야 변경 내용이 적용됩니다.
서비스 관리 명령어 (systemd)
# Nginx의 경우
sudo systemctl restart nginx
sudo systemctl status nginx
# Apache의 경우
sudo systemctl restart apache2
sudo systemctl status apache2
# PHP-FPM의 경우 (웹 서버와 별개로 관리)
sudo systemctl restart php8.1-fpm
마치며
안정적인 #PHP_운영 은 웹 서버와 PHP-FPM의 연동 설정에 달려 있습니다. Nginx는 성능과 효율성 면에서 이점을 제공하며, Apache는 모듈 사용의 유연성을 제공합니다. 사용 환경에 맞는 웹 서버를 선택하고, fastcgi_pass나 ProxyPassMatch를 통해 PHP-FPM과의 소켓/TCP 연동을 정확히 설정하는 것이 고성능 서비스 구축의 핵심입니다. ⚙️
빠른속도, 간편한사용, 장애없는VPN, 사용이력없는 깨끗한 아이피
https://xn--299ao67b9qbmsf04c.net/
VPN 5,500원 / IP교체 1,100원 / 유동프록시 22,000원 | LuzenVPN 루젠VPN
국내최저가 고정IP서비스,유동프록시(IP4000개이상제공),PPTP,L2TP,IPSec,OpenVPNVPN,통신사VPN,VPN프로그램,고정IP,고정아이피,PPTP,저렴한VPN,리니지MVPN,리니지VPN,아이온VPN,던파VPN,유동프록시,유동PROXY,바이
vpn.luzensoft.com
'프로그램 > PHP 고급' 카테고리의 다른 글
| 📚 PHP 고급 - 8주차: 배포 및 운영 기초 (Linux 서버) - 04 HTTPS (SSL/TLS) 설정 (0) | 2025.09.29 |
|---|---|
| 📚 PHP 고급 - 8주차: 배포 및 운영 기초 (Linux 서버) - 02 Git을 이용한 코드 배포 (0) | 2025.09.28 |
| 📚 PHP 고급 - 8주차: 배포 및 운영 기초 (Linux 서버) - 01 Linux 서버 환경 이해 (Ubuntu/CentOS) (0) | 2025.09.26 |
| 📚 PHP 고급 - 7주차: 성능 최적화 및 디버깅 - 04 로그 관리 및 모니터링 (0) | 2025.09.25 |
| 📚 PHP 고급 - 7주차: 성능 최적화 및 디버깅 - 03 PHP-FPM 설정 최적화 (0) | 2025.09.23 |