그간 포스트를 두어차례 쓰고 싶었지만 쓸 수 없었다.
IPv4 유료화 이후 서버 한 대로 IPv4 할당을 줄인 후 거기에 워드프레스 서버를 리버스 프록시로 연결해서 쓰는 방식을 썼었다. (워드프레스 서버는 IPv6만 할당받음)
그런데 이렇게 하니까 워드프레스 페이지 접속은 전혀 문제 없었지만, /admin
페이지만 404
오류가 발생하는 문제가 있었다.
워드프레스 서버에 IPv4를 할당해서 직접 접속하면 나지 않는 오류였다.
잘 되는 경우가 있기에 별 문제 아니겠거니하고 그 때마다 잠깐 잠깐 인터넷 검색해서 해결해보려고 했으나 늘 잘 안됐다.
그러다가 오늘 좀 제대로 살펴봐야겠다하면서 점심 식사 직전부터 문제를 진지하게 파기 시작했다.
nginx 리버스 프록시가 문제를 유발하는 것은 확실했다. 그쪽 로그를 보니 힌트를 얻을 수 있었다. 결정적 힌트였지만, 결정적 오해를 하는 바람에 3시간 가까이를 날려먹고 겨우 해결했다. 그 로그란…
2025/06/28 05:28:20 [error] 25456#25456: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream [이하 생략]
일반 페이지 접근 시에는 나지 않고, /admin
접근 할때만 났으니 이 메시지가 관련 있음은 명백했다.
cgi는 대학생 때 들어나 보고, PHP도 그냥 튜토리얼만 본 수준의 나로서는 FastCGI
는 완전히 모르는 키워드였다.
그래서 열심히 구글링도 해보고 AI한테도 물어보고 해서 시키는대로 이게 뭔지도 모르고 다 해봤는데, 해결이 되지 않았다. 그래도 진전이 있었는데, 최소한 404
오류가 나던 것을 nginx 오류로 바꿨다는 점이다.
영향을 주는 부분을 건드리고 있다는 것에 확신이 찬 나머지 많은 시간을 써서 여러 시도를 해 봤지만 해결되지 않았다.
구글링 키워드는 리버스 프록시, nginx, bitnami wordpress, fastcgi 등 핵심 키워드라고 생각하는 것을 넣었는데, 위 로그 메시지와 동일한 질문도 몇 건 보여서 하라는대로 했지만 역시 잘 안됐다.
키워드를 잘못 골랐음이 점점 분명해졌다. 나처럼 bitnami wordpress를 다른 서버에서 리버스 프록시로 접근하는 사례도 거의 없을거고 (취미의 영역)
그리고 reverse proxy란 건 매우 단순해서 그냥 모든 요청을 릴레이해주고, 응답을 릴레이해주면 끝인데, 대체 FastCGI 오류가 날 이유가 뭐가 있단 말인가? 백엔드 서버가 어떻게 구성되었든 리버스 프록시는 그 설정에 영향이 없었어야 함이 맞는데, 그걸 잊고 내가 겪는 문제와는 상관 없는(하지만 대다수의 사람들이 고생하는 일반적인 FastCGI 설정 오류와 직결되는) 것에 빠져든 것이다.
이상한 걸 느끼며 키워드를 이것저것 빼가며 검색해보던 중 “결정적 제보”를 발견하고야 말았다.
https://www.zabbix.com/forum/zabbix-help/461821-zabbix-behind-nginx-reverse-proxy-proxy_pass
zabbix는 전혀 모르는 것이지만, 오류 메시지가 동일해서 검색되었다.
거기에 답변 중 하나로 발견하게 되었다… “nginx의 설정 중 .php 파일을 로컬에서 처리하는 부분을 삭제해봐라”였다.
정확히 그 문제였다. 내가 php, fastcgi 설정을 미비해서 오류가 난 게 아니라, 내가 하지 않은 어떠한 다른 설정이 영향을 줘서 문제가 일어난 것이었다.
.php의 특별 처리는 nginx 기본 설정에 들어있었기 때문에 항상 적용 중이었고, 내가 추가한 리버스 프록시 설정에도 당연히 이 설정이 포함되었던 것이다. 그간 .php를 내가 직접 다뤄본 적은 없기에 이번이 첫 사례가 되었다.
/etc/nginx/default.d/php.conf
파일이 범인이었으며, 내용을 모두 커맨트 처리해서 문제가 수정됨을 확인했다.
이렇게 /admin
페이지가 다시 열리게 되었고(IPv4 주소를 버린 이후 처음 열린 것), 그 기쁨에 본 포스팅을 남긴다…