NGINX에서 별도의 PHP-FPM 풀을 설정하는 방법
게시됨: 2025년 2월 15일 오전 11시 52분 42초 UTC
마지막으로 업데이트되었습니다: 2026년 1월 12일 오전 8시 30분 0초 UTC
이 글에서는 여러 개의 PHP-FPM 풀을 실행하고 FastCGI를 통해 NGINX를 연결하는 데 필요한 구성 단계를 설명합니다. 이를 통해 가상 호스트 간의 프로세스 분리 및 격리가 가능해집니다.
How to Set Up Separate PHP-FPM Pools in NGINX
이 글의 정보는 Ubuntu Server 14.04 x64에서 실행되는 NGINX 1.4.6 및 PHP-FPM 5.5.9를 기준으로 작성되었습니다. 다른 버전에서는 유효하지 않을 수 있습니다. (업데이트: Ubuntu Server 24.04, PHP-FPM 8.3 및 NGINX 1.24.0에서도 이 글의 모든 지침이 여전히 작동하는 것을 확인했습니다.)
PHP-FPM 자식 프로세스 풀을 여러 개로 나누어 설정하는 것이 모든 프로세스를 하나의 풀에서 실행하는 것보다 여러 가지 이점이 있습니다. 주요 이점으로는 보안, 분리/격리 및 리소스 관리가 있습니다.
동기가 무엇이든, 이 글이 도움이 될 거예요 :-)
파트 1 – 새로운 PHP-FPM 풀 설정하기
먼저 PHP-FPM이 풀 설정을 저장하는 디렉토리를 찾아야 합니다. Ubuntu 14.04에서는 기본적으로 /etc/php5/fpm/pool.d입니다. 아마도 이 디렉토리에는 기본 풀 설정이 담긴 www.conf라는 파일이 이미 있을 것입니다. 만약 이 파일을 이전에 열어본 적이 없다면, 기본 설정이 사양이 낮은 서버를 기준으로 되어 있으므로 설정을 수정하는 것이 좋습니다. 하지만 지금은 처음부터 다시 시작하지 않도록 이 파일을 복사해 두세요.
물론, "mypool"은 여러분이 원하는 수영장 이름으로 바꾸시면 됩니다.
이제 nano 또는 원하는 텍스트 편집기를 사용하여 새 파일을 열고 목적에 맞게 수정하세요. 자식 프로세스 수와 풀이 실행되는 사용자 및 그룹을 조정해야 할 수도 있지만, 반드시 변경해야 하는 두 가지 설정은 풀 이름과 수신 대기 소켓입니다. 그렇지 않으면 기존 풀과 충돌하여 제대로 작동하지 않을 수 있습니다.
풀 이름은 파일 상단, 대괄호로 묶여 있습니다. 기본값은 [www]입니다. 원하는 이름으로 변경하세요. 설정 파일 이름과 동일하게 지정하는 것을 권장하므로, 이 예시에서는 [mypool]로 변경합니다. 변경하지 않으면 PHP-FPM이 해당 이름의 첫 번째 설정 파일만 로드하는 것으로 보이며, 이로 인해 문제가 발생할 수 있습니다.
다음으로 수신 대기할 소켓 또는 주소를 listen 지시문으로 변경해야 합니다. PHP-FPM은 기본적으로 Unix 소켓을 사용하므로 listen 지시문은 다음과 같을 것입니다.
원하는 유효한 이름으로 변경할 수 있지만, 구성 파일 이름과 유사한 이름을 사용하는 것이 좋습니다. 예를 들어 다음과 같이 설정할 수 있습니다.
좋습니다, 그럼 파일을 저장하고 텍스트 편집기를 종료하세요.
파트 2 – NGINX 가상 호스트 구성 업데이트
이제 변경하려는 FastCGI 구성이 포함된 NGINX 가상 호스트 파일을 열어야 합니다. 즉, 새 소켓에 연결해야 합니다.
우분투 14.04에서는 기본적으로 이러한 설정이 /etc/nginx/sites-available 디렉터리에 저장되지만, 다른 위치에 정의할 수도 있습니다. 가상 호스트 설정 파일이 어디에 있는지 가장 잘 아는 사람은 바로 당신일 겁니다 ;-)
선호하는 텍스트 편집기로 관련 설정 파일을 열고 PHP-FPM 소켓을 정의하는 fastcgi_pass 지시문(위치 컨텍스트에 있어야 함)을 찾으세요. 이 값을 1단계에서 생성한 새 PHP-FPM 풀 설정과 일치하도록 변경해야 합니다. 예시를 계속 진행하면 다음과 같이 변경합니다.
fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;
그다음 해당 파일도 저장하고 닫으세요. 이제 거의 다 됐습니다.
3부 – PHP-FPM 및 NGINX 재시작
변경한 설정을 적용하려면 PHP-FPM과 NGINX를 모두 재시작해야 합니다. 재시작 대신 재로드만으로도 충분할 수 있지만, 변경한 설정에 따라 결과가 다를 수 있습니다. 제 경우에는 기존 PHP-FPM 자식 프로세스가 즉시 종료되도록 하고 싶었기 때문에 PHP-FPM을 재시작해야 했지만, NGINX의 경우에는 재로드만으로도 충분할 수 있습니다. 직접 시도해 보세요.
sudo service nginx restart
자, 이제 완료되었습니다. 모든 단계를 올바르게 수행했다면 수정된 가상 호스트는 이제 새로운 PHP-FPM 풀을 사용하고 다른 가상 호스트와 자식 프로세스를 공유하지 않을 것입니다.
