워드프레스 XML-RPC 접속 시 "ERR_HTTP2_PROTOCOL_ERROR" 에러가 발생하는 경우

보안을 XML-RPC는 비활성화하는 것이 바람직합니다. 만약 XML-RPC를 활성화해야 하는 경우에는 특정 IP 주소만 접근이 가능하도록 코드를 추가하는 것을 고려할 수 있습니다. 클라우드웨이즈(Cloudways)에서 PHP 8.2로 업그레이드한 후에 XML-RPC가 작동하지 않는 문제가 발생했습니다. xmlrpc.php 페이지 접속 시 "ERR_HTTP2_PROTOCOL_ERROR" 에러가 발생했습니다. 이 경우 대처 방법에 대하여 살펴보겠습니다.

워드프레스 XML-RPC 접속 시 "ERR_HTTP2_PROTOCOL_ERROR" 에러가 발생하는 경우

워드프레스 사이트에서 example.com/xmlrpc.php에 접속할 때 다음과 같은 문구가 표시되면 정상적으로 xml-rpc가 활성화되어 있는 상태입니다.

XML-RPC server accepts POST requests only.

이 블로그에서는 .htaccess 파일에 다음 코드를 추가하여 XML-RPC를 비활성화했습니다.

# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
	order deny,allow
	deny from all
</Files>

이 블로그의 xmlrpc.php 파일에 접속하려고 시도하면 다음과 같은 오류 문구가 표시됩니다.

403 Permission Denied
You do not have permission for this request /xmlrpc.php

특정 IP 주소만 접속하도록 시도하려면 "deny from all" 라인 아래에 다음과 같은 형식으로 라인을 추가하면 됩니다.

allow from 123.456.78.900

뒤의 숫자는 접속을 허용할 IP 주소입니다.

해외 웹호스팅 중 하나인 클라우드웨이즈(Cloudways)에서는 얼마 전에 PHP 8.2에 대한 지원을 추가했습니다. 저는 PHP 8.2가 지원되는 것을 확인하고는 곧바로 PHP 8.2 버전으로 업그레이드했습니다.

하지만 PHP 8.2로 업그레이드한 후에 XML-RPC가 작동하지 않는 현상이 발생했습니다. xmlrpc.php 페이지 접속 시 다음과 같이 "ERR_HTTP2_PROTOCOL_ERROR" 에러가 발생했습니다.

워드프레스 XML-RPC 접속 시 ERR_HTTP2_PROTOCOL_ERROR 에러가 발생하는 경우

이 문제가 발생하면 먼저 보안 플러그인 등에서 XML-RPC가 비활성화되지 않았는지 체크해보시기 바랍니다. XMLRPC를 비활성화하는 플러그인이 설치되어 있는 경우 해당 플러그인을 비활성화하면 문제가 해결될 것입니다. Clearfy 등의 최적화 플러그인이나 Wordfence, iThemes Security 등의 보안 플러그인에서도 xml-rpc 비활성화 옵션을 제공합니다.

저는 플러그인 문제인 것으로 생각되어 플러그인을 하나씩 비활성화해도 문제가 해결되지 않았습니다. 테마를 Divi 테마로 바꾼 직후라서 테마가 문제인가 싶어서 테마를 다른 테마로 바꾸어도 마찬가지로 오류가 해결되지 않았습니다.

클라우드웨이즈에게 연락하니 서버 IP 주소와 문제가 되는 애플리케이션 이름을 알려 달라고 요청하여 해당 정보를 알려주었습니다. 그러자 클라우드웨이즈 담당자가 문제를 해결해주었습니다. 무슨 문제였는지 물어보니 PHP 업데이트로 인해 xmlrpc가 비활성화된 것을 발견하여 활성화했다는 답변을 들었습니다.

What I could observe updating the PHP disabled xmlrpc so I have enabled it.

클라우드웨이즈(Cloudways)에서 xml-rpc가 작동하지 않을 경우 지원 담당자에게 연락하면 서버 관련 문제인 경우 곧바로 해결해 줄 것입니다.

클라우드웨이즈의 경우 애플리케이션 설정에서 XML-RCP가 비활성화되어 있을 수 있습니다. 다음 그림과 같이 XMLRPC Access가 비활성화되어 있다면 활성화해야 XMLRPC 접근이 가능하게 됩니다.

참고로 클라우드웨이즈 가입 시 프로모션 코드 WPCAFE15를 입력하면 3개월간 15% 할인(총 45% 할인) 혜택을 받을 수 있습니다.

클라우드웨이즈

마치며

서두에 언급했듯이 xml-rpc는 가급적 비활성화하는 것이 보안에 바람직합니다. 활성화할 경우 디도스(DDoS) 공격에 악용될 수 있습니다. 꼭 활성화해야 하는 경우 특정 IP 주소만 허용하도록 .htaccess 파일에 코드를 추가하시기 바랍니다. IP 주소는 구글에 "내 IP 주소"로 검색하면 공인 IP 주소를 확인할 수 있습니다.

클라우드웨이즈를 이용하는 경우 PHP 버전 변경 후에 이런 문제가 발생한다면 고객센터로 연락하면 문제를 해결해 줄 것입니다. PHP 버전은 현재 PHP 8.0 이상을 사용하는 것이 보안상 바람직합니다. 저는 대부분의 사이트에 PHP 8.2를 적용하고 있는데, 모두 문제 없이 잘 작동하고 있습니다. PHP 8.2에서 에러가 발생한다면 PHP 8.1 버전으로 낮추어서 에러가 발생하지 않는지 체크해보시기 바랍니다.

참고

일부 글에 제휴 링크가 포함될 수 있으며 파트너스 활동으로 일정액의 수수료를 받을 수 있습니다.

댓글 남기기

* 이메일 정보는 공개되지 않습니다.