이런 경우 로그를 살펴보면 아래와 비슷한 메시지가 출력되고 있을 것입니다.
[crit] 3588#3588: *2 connect() to unix:/var/run/php/php8.3-fpm.sock failed
(13: Permission denied) while connecting to upstream,
client: 121.XXX.140.XXX, server: xxx.moyo.pw, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php8.3-fpm.sock:",
host: "xxx.moyo.pw:8080"
이 오류 메시지는 Nginx가 PHP-FPM 소켓에 연결하려고 할 때 권한 문제가 발생했음을 나타냅니다. 구체적으로는 Nginx 작업자 프로세스가 /var/run/php/php8.3-fpm.sock
에 접근할 권한이 없다는 것입니다.
다음은 이 문제를 해결하는 방법입니다:
- PHP-FPM 구성 확인:PHP-FPM 풀 설정 파일이 올바르게 정의되었는지 확인하세요. 해당 파일은 일반적으로
/etc/php/8.3/fpm/pool.d/www.conf
에 있습니다. 다음 설정을 확인하세요:ini
listen = /var/run/php/php8.3-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
listen.owner
와 listen.group
는 Nginx가 실행되는 사용자 및 그룹과 일치해야 합니다. 보통 Debian/Ubuntu 시스템에서는 둘 다 www-data
입니다.
Nginx 구성 확인:
Nginx 구성 파일이 PHP-FPM 소켓을 사용하도록 올바르게 설정되었는지 확인하세요. 구성 파일은 보통 /etc/nginx/sites-available/default
또는 /etc/nginx/conf.d/default.conf
에 있습니다. 다음 블록을 확인하세요:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
}
소켓 파일의 권한 확인:
/var/run/php/php8.3-fpm.sock
소켓 파일의 권한이 올바른지 확인하세요. 다음 명령어로 확인할 수 있습니다:
ls -l /var/run/php/php8.3-fpm.sock
결과는 다음과 비슷해야 합니다:
srw-rw---- 1 www-data www-data 0 Jul 15 12:34 /var/run/php/php8.3-fpm.sock
권한 또는 소유자/그룹이 올바르지 않은 경우 다음 명령어로 변경할 수 있습니다:
sudo systemctl restart php8.3-fpm
sudo systemctl restart nginx
SELinux (적용되는 경우):
시스템에서 SELinux를 사용하는 경우 연결을 차단할 수도 있습니다. SELinux 상태는 다음 명령어로 확인할 수 있습니다:
sestatus
SELinux가 활성화되어 있는 경우, 적절한 컨텍스트를 설정하거나 일시적으로 비활성화하여 테스트해볼 수 있습니다:
sudo setsebool -P httpd_can_network_connect on
이 단계를 따르면 권한 거부 오류를 해결하고 Nginx와 PHP-FPM 설정을 올바르게 작동시킬 수 있을 것입니다.
