Computer >> 컴퓨터 >  >> 문제 해결 >> Linux

Ubuntu 서버 업그레이드 후 Nginx 404 오류 해결 방법 완벽 정리

Nginx 웹 서버와 Ubuntu Server의 조합은 현재 가장 널리 사용되는 웹 서버 환경 중 하나입니다. 두 패키지 모두 꾸준히 업데이트가 배포되기 때문에 시스템을 최신 상태로 유지하기 쉽고, 성능과 안정성 면에서도 매우 효율적입니다. Ubuntu Server는 기본적으로 그래픽 인터페이스를 제공하지 않기 때문에 대부분의 시스템 관리자는 apt 패키지 관리자를 통해 업데이트를 진행합니다.

다만 Ubuntu Server를 업그레이드하는 과정에서 예상치 못한 오류가 발생하는 경우가 종종 있으며, GUI가 없다는 특성 때문에 초보 관리자에게는 원인 파악이 쉽지 않습니다. 다행히 몇 가지 간단한 명령어만으로도 업그레이드 직후 나타나는 Nginx 404 오류를 대부분 해결할 수 있습니다.

방법 1: 누락된 Nginx 에러 페이지 복구하기

AWS, 개인 서버 등 LEMP 스택 기반의 어떤 환경에서든 사이트를 호스팅하고 있다면, Ubuntu Server 업그레이드 이후 사이트가 갑자기 접속되지 않는 현상이 나타날 수 있습니다. 먼저 다른 컴퓨터의 웹 브라우저에서 해당 사이트에 접속해 보고, 404 오류가 반환된다면 Ubuntu Server CLI로 이동한 뒤 아래 명령을 실행하여 최근 에러 로그를 실시간으로 확인합니다.

tail -f /var/log/nginx/error.log

로그에 "open() ... failed" 형태의 에러 페이지 파일 누락 관련 메시지가 기록되어 있다면, 시스템이 에러 페이지 파일을 찾지 못하고 있는 상황입니다. 로그에는 40x.html이 언급되기도 하지만, 사이트가 접속 불가 상태이면서 404 오류가 발생하는 경우라면 대체로 드문 편입니다.

ls 명령을 실행해 해당 디렉터리에 파일이 실제로 존재하는지 확인합니다. 만약 파일이 없다면, 50X 계열 오류에 대응하는 HTML 에러 페이지를 직접 생성해 주어야 합니다.

참고로 패키지 관리자는 기본 디렉터리 구조를 사용할 경우 그 안에 저장된 파일들을 덮어쓰는 문제를 일으키곤 합니다. 권한이 허용된다면 Nginx 설정의 docroot(문서 루트) 항목을 커스텀 디렉터리로 변경함으로써 이런 문제를 미연에 방지할 수 있습니다.

방법 2: PHP-FPM이 올바른 소켓을 찾도록 설정하기

에러 로그에 "connect() failed (111: Connection refused) while connecting to upstream"과 같은 메시지가 기록되어 있다면, PHP7.0-FPM은 실행 중이지만 Nginx가 기대하는 위치에서 동작하지 않고 있다는 의미입니다. PHP 설정 방식에 따라 버전 숫자는 달라질 수 있습니다. 기본 설치 환경에서는 /run/php/php7.0-fpm.sock 경로의 소켓을 사용하지만, 이 오류가 발생했다면 실제로는 다른 위치에 있을 가능성이 높습니다.

아래 명령을 차례로 실행하여 시스템 내에 PHP-FPM 소켓이 존재하는지 찾아봅니다.

ps aux | grep php-fpm
find / -name 'php*fpm.sock'

소켓이 검색되었다면, Nginx 설정 파일을 열어 fastcgi_pass 항목에 올바른 소켓 경로를 지정해 주어야 합니다. 예를 들어 소켓 파일을 사용하는 경우 다음과 같이 경로를 실제 위치에 맞게 수정합니다.

fastcgi_pass unix:/디렉터리경로/php7.0-fpm.sock;

소켓 파일 대신 구식 TCP 소켓을 사용하는 환경이라면, 명령줄에서 sudo netstat -tulpn | grep 9000을 실행해 PHP가 9000번 포트에서 수신 중인지 확인합니다. 수신 중이라면 nano, vi 등의 텍스트 편집기로 Nginx 설정의 fastcgi_pass 부분을 열어 unix:...로 되어 있는 값을 127.0.0.1:9000으로 변경하면 됩니다.

위 방법으로도 해결되지 않는다면, PHP-FPM 서비스 자체가 정상 작동하는지 확인해야 합니다. 사용 중인 버전에 맞춰 아래 명령으로 재시작한 뒤 앞선 과정을 다시 반복해 보세요.

sudo systemctl restart php7.0-fpm

마지막으로 대부분의 경우 PHP 설정 파일(www.conf 등)의 listen 항목과 Nginx 설정의 fastcgi_pass 값이 서로 일치해야 한다는 점을 기억하세요. 최신 설정 방식에서는 유닉스 소켓 경로를, 구식 방식에서는 127.0.0.1:9000을 사용하는 것이 일반적입니다. 이 두 값만 정확히 맞춰 주면 업그레이드 후 발생하는 404 오류 대부분은 손쉽게 해결됩니다.

마무리

Ubuntu 서버 업그레이드 후 Nginx 404 오류는 크게 에러 페이지 파일 누락과 PHP-FPM 소켓 경로 불일치 두 가지 원인에서 비롯됩니다. 에러 로그를 먼저 확인하고 위의 두 가지 방법을 순서대로 점검하면, GUI 없는 서버 환경에서도 빠르게 문제를 진단하고 복구할 수 있습니다.