웹 사이트의 기능을 빠르게 복원하는 방법

인터넷 환경에서 특정 자원에 접근하기 위해서는, 해당 자원이 저장된 서버의 지정된 호스트로 요청을 보내는 과정이 필요합니다. 이러한 과정은 컴퓨터, 스마트폰을 비롯하여 인터넷 사용이 가능한 모든 장치에서 이루어질 수 있습니다.

이때, 서버에 자원을 요청하는 장치를 ‘클라이언트’라고 칭하며, 서버에 자원을 요청하는 행위를 ‘HTTP 요청’이라고 합니다.

HTTP는 인터넷을 통해 정보가 교환될 때 적용되는 일종의 프로토콜 또는 규칙입니다. 클라이언트가 서버에 자원을 요구할 때, 이를 HTTP 요청을 보낸다고 표현합니다.

클라이언트의 요청을 받은 서버는 성공적으로 자원을 제공하는 것 외에도, 요청 처리 결과에 따라 세 자리 숫자로 이루어진 상태 코드를 응답으로 보냅니다.

자원 요청은 성공적으로 처리될 수도 있고, 다른 위치로 재지향될 수도 있으며, 요청한 자원을 서버에서 찾을 수 없는 경우도 있습니다. 이러한 요청 처리 결과에 대한 정보는 상태 코드를 통해 전달됩니다.

상태 코드는 첫 번째 숫자에 따라 다양한 클래스로 나뉩니다. 1로 시작하는 상태 코드는 요청이 접수되어 현재 처리 중임을 알리는 정보 코드입니다. 2로 시작하는 코드는 클라이언트의 요청이 성공적으로 접수, 이해 및 승인되었음을 나타냅니다.

3으로 시작하는 코드는 재지향을, 4로 시작하는 코드는 클라이언트 측의 오류를, 5로 시작하는 코드는 서버 측의 오류를 의미합니다.

HTTP 표준에 의해 정의된 공식 상태 코드 외에도, 공식적으로 정의된 상태 코드 분류를 확장하여 사용하는 비공식 상태 코드도 존재합니다. 그중 하나가 521 상태 코드로, 이는 웹 서버가 다운되었다는 의미입니다. 이 코드는 Cloudflare의 리버스 프록시 서비스에서 사용되는 비공식 상태 코드입니다.

리버스 프록시 서버는 웹 서버 앞에 위치하여 클라이언트의 요청을 가로채어 웹 서버로 전달하는 중간 서버 역할을 합니다. 이 구조를 통해 클라이언트가 웹 서버와 직접적으로 통신하는 것을 방지할 수 있습니다.

리버스 프록시 서버는 웹 서버의 ID를 보호하고, 안정성과 보안, 성능을 향상시키며, 트래픽이 많은 웹사이트의 로드 밸런싱을 지원하는 역할을 합니다.

Cloudflare의 리버스 프록시 서비스의 예시로 CDN(콘텐츠 전송 네트워크)을 들 수 있습니다. CDN은 사용자의 물리적 위치와 가까운 곳에 웹 콘텐츠를 캐싱하여 분산 저장하는 서버들의 네트워크입니다. 이를 통해 웹 콘텐츠 로딩 속도를 향상시킬 수 있습니다.

521 오류인 ‘웹 서버가 다운되었습니다’는 클라이언트가 자원을 요청한 원본 서버가 Cloudflare 프록시와의 연결을 거부할 때 발생합니다. Cloudflare 프록시 서비스는 클라이언트가 요청한 콘텐츠를 제공하기 위해 포트 80 또는 443을 통해 원본 서버와 연결을 시도합니다.

때때로, 원본 서버가 Cloudflare 프록시와의 연결을 직접적으로 거부하고 연결 거부 오류를 되돌려 보낼 수 있습니다. Cloudflare가 이러한 연결 거부 오류를 감지하면, 클라이언트에게 ‘521 Web Server is Down’ 오류 메시지를 표시하게 됩니다.

521 오류의 원인

521 오류는 원본 웹 서버가 다운되었음을 의미하지만, 다른 원인으로 인해 발생할 수도 있습니다. 521 오류의 잠재적인 원인은 다음과 같습니다.

#1. 원본 웹 서버 다운

클라이언트가 요청하는 리소스가 저장된 원본 웹 서버가 오프라인 상태인 경우, Cloudflare 리버스 프록시 서비스는 연결을 맺을 수 없게 됩니다. 이로 인해 521 오류가 발생합니다. 또한, 원본 서버의 일부 웹 서버 프로세스가 제대로 작동하지 않아 Cloudflare가 연결할 수 없는 경우에도 이러한 오류가 발생할 수 있습니다.

#2. 원본 웹 서버에서 Cloudflare 요청 차단

Cloudflare의 리버스 프록시 서비스는 클라이언트의 요청을 받아 해당 리소스가 있는 서버로 전달합니다. 이때, 원본 서버의 보안 설정 또는 방화벽이 Cloudflare의 IP 주소에서 발생하는 요청을 과도한 공격으로 간주하여 차단할 수 있습니다.

이러한 상황은 Cloudflare의 IP 주소를 차단하여 Cloudflare가 원본 웹 서버에 연결하지 못하도록 만들고, 결과적으로 원본 서버가 정상 작동하더라도 521 오류가 발생하게 만듭니다.

#3. 원본 서버 설정 오류

Cloudflare의 CDN은 일종의 리버스 프록시 서비스이므로, CDN과 함께 작동하기 위해서는 서버 설정이 적절하게 이루어져야 합니다. 설정 과정에서 오류가 발생하면, 클라이언트가 원본 서버로 요청을 보낼 때 521 오류가 발생할 수 있습니다. 연결을 거부하는 대신 패킷을 삭제하도록 설정된 방화벽 또한 521 오류를 초래할 수 있습니다.

#4. Cloudflare SSL 인증서 관련 문제

Cloudflare는 SSL(Secure Socket Layer) 인증서를 활용하여 서버와 클라이언트 간의 트래픽을 암호화합니다. SSL 인증서는 웹사이트의 신원을 확인하고 암호화된 연결을 설정하는 데 사용됩니다.

만약 웹사이트의 SSL 인증서에 문제가 있거나, Cloudflare에서 사용 중인 암호화 모드에 문제가 있는 경우, 원본 서버는 연결 요청을 거부하며 521 오류를 발생시킬 수 있습니다.

521 오류 해결 방법

521 오류를 해결하기 위한 다양한 방법들이 있습니다. 여기에는 다음이 포함됩니다.

#1. 원본 서버 온라인 상태 확인

521 오류는 원본 서버가 오프라인 상태이거나 다운되었을 때 발생할 수 있습니다. 원본 서버가 실행 중인지 확인하기 위해 터미널 창을 열고 `ping` 명령어를 사용하여 해당 서버가 온라인 상태인지 확인할 수 있습니다.

ping koreantech.org.com

서버가 정상적으로 작동 중이라면, 아래와 같이 서버로부터 응답을 받을 수 있습니다.

이 예시에서는 `koreantech.org`의 원본 서버가 정상 작동 중임을 보여줍니다. 그러나 두 번째 테스트 서버는 현재 다운된 상태입니다. 패킷 손실률이 100%이며, 수신된 패킷이 0개입니다. 해당 웹사이트에 접속하려고 하면 502 오류 페이지가 표시됩니다.

`CTRL + C` 키 조합을 눌러 `ping` 명령어의 출력을 종료할 수 있습니다.

서버가 온라인 상태인지 확인하는 또 다른 방법은 `isitdownrightnow`와 같은 웹사이트를 이용하는 것입니다. 해당 웹사이트에 확인하고자 하는 웹사이트 주소를 입력하면 서버가 정상적으로 실행 중인지 여부를 확인할 수 있습니다.

Cloudflare의 CDN을 처음 사용하는 경우, 원본 서버가 포트 443을 통해 수신 대기하고 있으며, Cloudflare의 IP 주소가 포트 443에 접근하도록 제대로 설정되었는지 확인해야 합니다. 그렇지 않으면 패킷이 손실되고 521 오류가 발생할 수 있습니다.

#2. Cloudflare IP 주소 화이트리스트 추가

521 오류의 또 다른 원인은 Cloudflare IP 주소가 의심스러운 활동으로 간주되어 차단되는 경우입니다. 이를 해결하기 위해 호스팅 제공업체에 문의하여 Cloudflare의 IP 주소에서 발생하는 요청을 차단하거나 제한하지 않도록 확인해야 합니다.

만약 직접 전용 서버를 운영하고 있다면, 방화벽이 Cloudflare IP 주소를 차단하지 않도록 설정해야 합니다. 또한 `mod_antiloris` 및 `mod_reqtimeout`과 같이 특정 IP 주소에서 22회 이상 연결 시도를 차단하는 Apache 모듈을 비활성화하거나 제거해야 합니다.

#3. SSL 인증서 또는 암호화 모드 확인

Cloudflare는 설정된 SSL 암호화 모드(Flexible, Full, Strict)에 따라 원본 서버가 제공하는 SSL 인증서를 다르게 처리합니다. 이러한 암호화 모드는 Cloudflare 리버스 프록시 서비스와 원본 서버 간의 연결을 설정하는 데 중요한 역할을 합니다.

Full 또는 Strict 모드는 SSL 인증서를 필수로 요구하므로 가장 많이 사용되는 선택지입니다. 이러한 모드에서는 Cloudflare가 원본 서버의 유효한 SSL 인증서를 요구합니다. 특히 Strict 모드를 사용하는 경우, 웹사이트의 SSL 인증서에 문제가 있다면 521 오류가 발생할 수 있습니다.

이 문제를 해결하기 위해 Cloudflare 원본 인증서를 원본 서버에 설치하거나, 신뢰할 수 있는 인증 기관에서 발급된 SSL 인증서를 사용해야 합니다. Strict 모드에서 Full 모드로 전환하는 것도 원본 서버의 SSL 인증서 문제로 인해 발생하는 521 오류를 해결하는 데 도움이 될 수 있습니다.

결론

Cloudflare CDN과 같은 콘텐츠 전송 네트워크를 이용하는 것은 인터넷에서 콘텐츠를 제공하는 보편적인 방법이 되었습니다. CDN을 사용하면 웹 애플리케이션의 로딩 속도가 향상되고, 성능이 개선되며, 사이버 공격으로부터 더 안전하고 안정적인 환경을 구축할 수 있습니다.

Cloudflare를 사용할 때 521 오류가 발생할 수 있으며, 이는 원본 서버에 문제가 있음을 나타냅니다. 이 경우, 위에 제시된 해결 방법들을 시도해 볼 수 있습니다. 만약 모든 시도가 실패하면 Cloudflare 고객 지원팀에 연락하여 추가 지원을 받는 것이 좋습니다.