콘텐츠로 건너뛰기

Nginx Fetch failed [ net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK) ]

어느날 부터 인지는 모르겠는데, 어렴풋이 생각해보면 2주정도 전부터 그랬던듯, glb 임포트하는 뷰어 페이지에 접속하면 fetch failed 오류가 발생하면서 페이지로딩이 아예 안되는 문제가 발생했다.
최근에 업데이트 한거라곤 사이트 SSL 인증서 업데이트와, Npm 모듈 업데이트 ( Next.js, Three.js, React.js ) 밖에 하지 않아서 자연스럽게 Next.js 버전 업데이트가 문제라고 단순하게 생각했었다.
Public 폴더 경로가 바뀌었는지 아니면 Config 가 바뀐건지 구글 검색과 Chatgpt 질문을 던져 나오는 해결방법들을 적용해도 전혀 해결될 기미가 보이지 않았다.

그렇게 이틀정도 문제 해결방법을 찾아서 헤메고 있다가 문득 Nginx 오류 로그를 보면 이유를 알 수 있을 것 같아 맥북 열어서 오류 로그를 출력해보았다.

// 맥북의 nginx 로그 파일의 위치
// /usr/local/var/log/nginx/
// error.log 오류 메세지 기록 파일
// access.log 요청 기록이 저장되는 파일
// 설정파일 (/usr/local/etc/nginx/nginx.conf 또는 /etc/nginx/nginx.conf 의 error_log 
//     디렉티브를 확인 하여 로그 파일 위치를 명확히 알 수 있음.
//     grep error_log /usr/local/etc/nginx/nginx.conf
// 실시간 로그 확인
tail -f /usr/local/var/log/nginx/error.log

// 다중 로그 파일 모니터링
tail -f /usr/local/var/log/nginx/error.log /usr/local/var/log/nginx/access.log

// ** GoAccess : 실시간 웹 로그 분석 도구
// ** Inav : 로그 파일 탐색 및 분석 도구

서버의 오류 메세지 파일을 출력해보고 Fetch failed 문제의 원인을 바로 파악 할 수 있었다.

2024/11/27 23:56:41 [crit] 19436#0: *2470 open() “/usr/local/var/run/nginx/proxy_temp/1/16/0000000161” failed (13: Permission denied) while reading upstream, client: ——–, server: 192.168.0.18, request: “GET /daft_punk_in_end_of_line_club.glb HTTP/1.1”, upstream: “http://127.0.0.1:3000/daft_punk_in_end_of_line_club.glb”, host: “quasarxr.com”, referrer: “https://quasarxr.com/SubApp”

현재 내가 만들고 있는 웹사이트는 라이트세일 – 홈 웹서버 구조의 nginx 리버스 프록시를 사용하여 구현되어 있다. 이 때 proxy_temp 폴더에 임시 파일을 캐싱하는데 맥북에서 nginx 서버에 접근권한이 없어서 파일 요청이 실패하고 있었던 것이었다. 그렇다면 해당 폴더의 디렉터리 권한을 체크해 보고 문제가 있다면 권한 설정을 해주면 되겠다.

// 다음 명령어로 디렉토리의 권한을 확인한다.
ls -ld /usr/local/var/run/nginx/proxy_temp
소유권 & 허가권 확인 방법


확인해보니 디렉토리 권한이 소유그룹에 하나도 없는것이 보인다. 이로써 문제의 원인은 명확히 파악 되었으니, 해당 폴더의 nginx 의 접근권한을 풀어주면 해결이 되겠다.

// proxy_temp 디렉토리 권한을 nginx 프로세스가 접근할 수 있도록 변경
// 일반적으로 nginx 는 www-data 또는 nobody 사용자로 실행된다.
sudo chown -R $(whoami):staff /usr/local/var/run/nginx/proxy_temp

// -R 하위 디렉터리의 모든 권한 변경
// $(whoami):staff 바꿔줄 소유자:그룹명 $(whoami) 는 현재 사용자명을 말한다.

sudo chmod -R 755 /usr/local/var/run/nginx/proxy_temp

그 다음 Nginx 설정을 확인 해주면 마무리 되겠다.

// nginx.conf 파일 열기
sudo nano /usr/local/etc/nginx/nginx.conf

// proxy_temp_path 가 아래와 같이 설정되어 있는지 확인한다.
proxy_temp_path /usr/local/var/run/nginx/proxy_temp 1 2;

// 변경 사항을 저장하고 종료 한뒤 nginx를 재시작 한다.
sudo nginx -s reload

그런데 문제가 해결된 후 생긴 궁금증은 권한설정이 잘못 되어있었다면 왜 처음에는 문제가 없다가 몇일전 부터 문제가 생긴것인가 이다. 이것에 대한 답은 아직 찾지 못하였다.

chmod / chown ? = http://www.redcrow.co.kr/wordpress/?p=532

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다