웹 개발/error

[error] ERR_CONNECTION 서버가 꺼져있을 때 발생하는 연결 에러

dani0312 2024. 1. 3. 11:24

◾에러 파악하기

요청을 보내는 곳, 즉 요청을 받아 응답해야 하는 곳의 서버가 꺼져있을 때 발생하는 연결에러이다. 물론 어떤 식으로든 연결이 되지 않는다면 이 연결 에러가 발생할 것이다. 

 

✔️Background

현재 프론트엔드는 nginx서버로, 백엔드는 백엔드 서버로 진행하고 있다.

서비스를 하기 위해 프론트에서 백엔드 서버로 POST요청을 보냈을 때이다. 

 

 

✔️에러 발생 상황

POST 요청을 보내는 버튼을 클릭하면, 개발자도구에서 다음과 같은 connection오류가 나온다. 

 

에러 메시지를 확인해보면 POST뒤에 나오는 http://158... 주소는 벡엔드 서버 (API서버) 의 주소이다. 

첫 번째 에러는  ERR_CONNECTION_REFUSED "POST요청을 보냈을 네트워크가 연결에 실패했다. "이고,

두 번째 에러는 request failed TypeError: Failed to fetch "fetch요청을 실패했다." 라는 의미이다.

 

 

이는 백엔드 서버에서 아래와 같이 애플리케이션을 종료시켰기 때문이다.  Putty를 이용해 백엔드 서버를 접속해, 실행중인 애플리케이션을 종료시켰다.

 

요청을 보내는 곳의 서버가 꺼져있기 때문에(백엔드 서버) 연결 오류가 뜨고 응답을 받아오지 못하고 fetch 에러가 발생하는 것이다. 만일 위와 유사한 상황이라면 요청을 받는 곳, fetch요청을 보내는 곳의 서버가 잘 연결이 되어있는지, 현재 동작을 하여 프로세스가 살아있는 상태인지 보아야한다.

 

 

 

 

◾에러 해결하기

✔️ 백엔드 서버 다시 켜기 (Unix/Linux환경)

백엔드 서버에서 nohup명령어를 사용하여 프로세스가 다시 실행되도록 하였다. 

 nohup java -jar shortenurlservice-0.0.1-SNAPSHOT.jar > output.log &

 

 

백엔드 서버를 다시 켰으니 프론트엔드에서 다시 요청을 보내본다. 아까와 동일하게 POST요청을 보내는 버튼을 클릭하니 서비스가 정상적으로 동작한다. 에러도 전혀 뜨지 않는다. 

 

 

네트워크 탭을 확인해보아도 우리가 원하는 fetch요청이 성공적으로 되고 있음을 확인할 수 있다.

 

 

 

💡참고사항

다른 origin으로 요청을 보내는 것이기 때문에 CORS이슈가 발생하는 것이 정상이지만, 이 부분은 해결을 하여 본 글에서는 다루지 않았다 CORS이슈에 대한 해결 과정도 포스팅할 예정이다.