Nginx 'Connection Refused' 오류 로그 분석 및 문제 해결 가이드

Nginx 오류 로그를 해석하여 'connection refused' 문제의 근본 원인을 파악하는 모범 사례를 알아보고, 소켓 설정 및 업스트림 서버 확인 방법을 살펴봅니다.

개요

Nginx에서 발생하는 connect() failed (111: Connection refused) 오류는 웹 서버가 업스트림 서버(예: PHP-FPM, Node.js, Python 등)와 통신을 시도했으나 연결이 거부되었음을 의미합니다. 이 가이드에서는 이 문제를 진단하고 해결하는 방법을 단계별로 설명합니다.

1. 오류 로그 위치 확인

가장 먼저 Nginx 오류 로그를 확인해야 합니다. 일반적으로 다음 경로에 위치합니다:

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

2. 일반적인 원인 및 해결 방법

업스트림 서비스가 실행 중인지 확인

가장 흔한 원인은 업스트림 서비스가 중단되었거나 시작되지 않은 경우입니다.

# 예: PHP-FPM 상태 확인
sudo systemctl status php-fpm

소켓 설정 확인

Nginx 설정 파일(nginx.conf 또는 사이트 설정)의 fastcgi_pass 또는 proxy_pass 항목이 올바른 포트나 유닉스 소켓을 가리키고 있는지 확인하세요.

TCP 포트 예시:

fastcgi_pass 127.0.0.1:9000;

유닉스 소켓 예시:

fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;

방화벽 및 권한 문제

  • 방화벽: ufw 또는 iptables가 해당 포트의 통신을 차단하고 있는지 확인하세요.
  • 권한: 유닉스 소켓을 사용하는 경우, Nginx 프로세스가 해당 소켓 파일에 접근할 수 있는 권한을 가지고 있는지 확인해야 합니다.

결론

'Connection refused' 오류는 대부분 서비스가 응답하지 않거나 설정 불일치로 인해 발생합니다. 로그를 세밀하게 분석하고 서비스 상태를 점검하면 대부분의 문제를 빠르게 해결할 수 있습니다.