WordPress REST API 오류 rest_not_logged_in 해결 방법 (Apache + PHP-FPM 환경)
아하, 이해했습니다!
티스토리에 그대로 복붙할 수 있도록 코드블럭 없이, 순수 텍스트 형태로 마크다운 없이 깔끔하게 다시 작성해드릴게요.
WordPress REST API 오류 rest_not_logged_in
해결 방법 (Apache + PHP-FPM 환경)
워드프레스에서 REST API를 사용할 때 다음과 같은 오류를 겪은 적 있으신가요?
{"code":"rest_not_logged_in","message":"You are not currently logged in.","data":{"status":401}}
이 글에서는 이 오류의 원인과 해결 방법을 정리해두었습니다. Apache + PHP-FPM 환경에서 REST API 인증이 되지 않을 때 참고하시기 바랍니다.
1. 발생한 오류
워드프레스에서 비로그인 상태로 API를 호출하면 다음과 같은 메시지가 반환됩니다.
{"code":"rest_not_logged_in","message":"You are not currently logged in.","data":{"status":401}}
특히 로그인 사용자만 호출 가능한 REST API 또는 JWT 인증을 사용하는 경우, 토큰이 제대로 포함되어 있음에도 이런 오류가 발생할 수 있습니다.
2. 원인 분석
해당 오류는 대부분 다음과 같은 이유로 발생합니다.
Apache가 Authorization 헤더를 PHP까지 전달하지 않음
Apache는 기본 설정에서 Authorization 헤더를 PHP-FPM으로 전달하지 않습니다.
그 결과, REST API에서는 인증 정보가 없다고 판단해 rest_not_logged_in 오류를 반환하게 됩니다.
3. 해결 방법
3-1. Apache 설정 추가
.htaccess 또는 VirtualHost 설정에 아래 내용을 추가합니다.
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
기존에 RewriteRule 방식으로 Authorization을 전달했다면, 이 방법이 훨씬 안정적으로 동작합니다.
3-2. PHP-FPM 설정 수정
php-fpm 설정 파일(www.conf 또는 pool 파일)에 아래 항목을 추가하거나 주석을 해제합니다.
env[HTTP_AUTHORIZATION] = $HTTP_AUTHORIZATION
설정 파일 위치 예시:
설정 후 PHP-FPM을 반드시 재시작해야 적용됩니다.
sudo systemctl restart php-fpm
3-3. Apache 모듈 확인
다음 명령어로 필요한 모듈(mod_rewrite, mod_setenvif)이 활성화되어 있는지 확인합니다.
apachectl -M | grep rewrite
apachectl -M | grep setenvif
둘 다 출력되지 않는다면 Apache 설정에서 모듈을 활성화하고, Apache를 재시작해야 합니다.
4. 처리 결과
위 설정을 완료한 후, Authorization 헤더가 정상적으로 전달되었고, REST API 호출 시 더 이상 rest_not_logged_in 오류 없이 정상적인 응답을 받을 수 있게 되었습니다.
JWT 인증 플러그인, WooCommerce API, 커스텀 REST 엔드포인트 등에서도 인증이 정상 작동합니다.
태그
wordpress, rest api, rest_not_logged_in, authorization, apache, php-fpm, wordpress 오류, api 인증, htaccess, 서버 설정
필요하신 분께 도움이 되셨길 바라며, 관련 질문이 있다면 댓글로 남겨주세요!
복붙만 하시면 되도록 꾸며드렸습니다. 필요하면 제목 스타일이나 문단 강조만 블로그에서 편집하셔도 깔끔하게 적용됩니다!