두 가지 문제 발생
1. 날짜 선택 기능이 작동하지 않습니다
2. 약간 큰 파일을 다운로드하세요. 절반만 다운로드할 수 있습니다.
페이지 디버깅 중 ERR_CONTENT_LENGTH_MISMATCH 오류가 발견되었습니다
시스템: CentOS, Nginx, 백엔드 tomcat 프록시
원인: nginx는 Proxy_temp 디렉터리에 대용량 파일을 캐시하지만 이 디렉터리에 대한 읽기 및 쓰기 권한이 없습니다.
해결 프로세스:
페이지 디버깅, 오류 발생: net::ERR_CONTENT_LENGTH_MISMATCH
Chrome에서 캐시하거나 강제로 새로고침하세요. 응답 상태 코드는 200
이며 강제로 새로고침되지 않으며 응답의 상태 코드는 206
응답 헤더에서 content-length의 길이가 대상 파일의 실제 길이와 일치합니다.
은 위의 콘텐츠 길이 불일치 오류를 발생시킵니다
nginx 없이 tomcat에 직접 접속하면 에러도 발생하지 않고 시스템이 정상적으로 작동합니다.
여러 검색 끝에 먼저 문제 설명이 매우 비슷한 글을 발견했습니다. nginx gzip 압축이라고 언급하는 이유는 nginx는 압축할 파일을 준비하고 압축된 길이에 따라 데이터 스트림을 처리하지만 프록시를 통해 전송되는 데이터는 실제로 압축되지 않고 nginx는 전송이 완료되기 전에 연결을 종료하기 때문입니다. .
nginx gzip 구성 학습 시작(또 메모할 준비)
문제가 해결되지 않았으니 먼저 자고 일어나서 계속하세요
자고 일어났는데도 정신이 없어서 솔직하게 로그를 확인했습니다
/ var/log/nginx/error.log
아하, 문제는 여기에 있습니다:
proxy_temp 디렉토리, 소유자는 루트, rwx 권한, 다른 사용자에게는 권한이 없습니다.
2015/05/30 00:11:53 [crit] 8808#0: *60 open() "/var/cache/nginx/proxy_temp/2/01/0000000012" failed (13: Permission denied) while reading upstream, client:...
해결책:
1. nginx를 루트로 실행
2. Proxy_temp 디렉터리의 소유자를 nginx로 설정
3.proxy_temp 디렉터리 그룹을 nginx로 설정하고 rwx 권한을 부여합니다
4. 캐시 비활성화 🎜>
루트를 사용하여 nginx를 실행하고 싶지 않아서 방법 3을 선택하고 시스템이 먼저 작동하도록 두었습니다
남은 문제:
1. 먼저 Proxy_temp 디렉토리 루트는 무엇입니까? 루트여야 할까요?
2. 방법 3을 선택했는데 동일한 파일에 대해 여러 개의 캐시가 생성되는 것을 확인했습니다. 왜 이런 일이 발생합니까?
3. 우리의 경우 캐시가 필요한가요? 캐시를 비활성화하는 것이 더 합리적인 선택일까요? >
황학
2015-05-30
위 내용은 Nginx를 통해 백엔드 애플리케이션에 접근하는 방법과 ERR_CONTENT_LENGTH_MISMATCH 문제를 해결하는 방법과 관련 내용을 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.