아파치 웹서버 - Service Unavailable Error(503 에러) 해결 방법
아파치 웹서버 - Service Unavailable Error(503 에러) 해결 방법
REDINFO
몇달 전 2024-02-02 01:01:09

아파치 웹서버에서 발생되는 Service Unavailable Error 에러는 서비스는 시작되었지만 접근할 수 없는 서버 내부 오류로 검색을 통해서 해결이 안되는 경우가 있다. 

 

주로 검색을 하면 포트를 열어서 해결하라는 식으로 소개가되는데 이러한 방법으로도 끝까지 해결이 안되는 경우가 있다. 물론 포트를 사용가능하게 여는것도 필요하지만 가장 중요한건 서버 에러 로그를 확인하는게 중요하다. 

 

우선 아파치의 access_log를 열어서 접속 흔적이 있는지 확인해 보자

# vi /var/log/httpd/access_log

 

나 같은 경우 열어보니 접속 흔적은 있었다. 

"GET / HTTP/1.1" 503 299 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36"

 

access_log 는 접속로그이기에 접속 상태만 확인 가능하며 내부 오류는 확인이 불가능하므로 아래와 같이 error_log를 살펴보자 

# vi /var/log/httpd/error_log

 

로그파일 에러를 살펴보니 proxy:error 관련된 에러가 보이며 이와 함께 FCGI 와 9000 포트가 눈에 거슬린다. 

[Fri Feb 02 09:19:30.591299 2024] [proxy:error] [pid 1722] (111)Connection refused: AH00957: FCGI: attempt to connect to 127.0.0.1:9000 (*) failed
[Fri Feb 02 09:19:30.591319 2024] [proxy_fcgi:error] [pid 1722] [client 192.168.150.1:51804] AH01079: failed to make connection to backend: 127.0.0.1

 

흰트는 충분히 주어졌고 해결 방법도 생각이 났지만 우선 이 설정들을 어디서 했는지 알고 싶어 아파치 설정을 모두 열어서 찾아본 결과 php.conf 설정에서 찾게 되었다. (나같은 경우 yum 의존성 패키지로 설치하였기에 경로는 아래와 같고 컴파일 설치는 다를 수 있다)

# vi /etc/httpd/conf.d/php.conf

 

9000 포트를 설정했던 구간은 아래와 같았다. 

<FilesMatch \.(php|phar)$>
	# SetHandler application/x-httpd-php # 이부분을 주석처리
	# 아래처럼 핸들러 적용
	SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

 

결과적으로 위의 설정과 연계되는건 php-fpm 이라는걸 알 수 있었다. 아파치 설치시 php-fpm을 설치했을 경우 간혹 서버 재시작후 php-fpm 서비스를 시작해주지 않아서 에러가 발생될 수 있다. 따라서 아래와 같이 아파치 종료 후 php-fpm도 실행을 해주면된다. 

# systemctl stop httpd
# systemctl start httpd
# systemctl start php-fpm

 

그디어 웹서버가 열렸고 스트레스도 사라지게 되었다. 만약 php-fpm 서비스 시작 시 포트 오류가 발생되면 방화벽을 확인해보자 (firewall 기준)

# firewall-cmd --list-all

 

그러면 아래와 같이 열린 포트가 확인 가능하다. 

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources:
  services: dhcpv6-client ssh
  ports: 80/tcp 48080/tcp 1180/tcp 8090/tcp 9000/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

 

위 fcgi 에서 설정한 포트가 9000번이라면 아래와 같이 firewall-cmd 명령어를 이용하며 일시적 또는 영구적으로 9000번 포트를 추가후 방화벽 리로드를 해주면 된다. 

 

포트를 일시적 으로 추가할 경우 

# firewall-cmd --add-port=9000/tcp

 

포트를 영구적 으로 추가할 경우 

# firewall-cmd --permanent --add-port=9000/tcp

 

방화벽 리로드

# firewall-cmd --reload

 

Service Unavailable Error의 경우 무작성 검색을 통해 해결할려고 하는것 보단 이처럼 서버에러 로그를 통해 나에게 발생된 원인이 무엇인지 먼저 확인하고 검색하는게 좋다. 그렇지 않을 경우 포트만 건들다가 스트레스 받고 결국 웹서버를 다시 설치할 수 있으니 조심해야한다. 

이 포스트글이 도움이 되었나요?
0

Comment

댓글작성

0(500) | 1(30)