질문: too big header
3516 단어 Nginx
인터페이스 오류 발생 Nginx 502 Bad Gateway
문 제 를 조사 하 다.
Nginx 가 잘못 보 고 했 으 니 Nginx 서버 오류 로 그 를 살 펴 보 겠 습 니 다.
[error] 12917#0: *62380774 upstream sent too big header while reading response header from upstream.
즉, 인터페이스 요청 이 보 낸 header 헤드 가 너무 커서 Nginx 에 요청 한 요청 헤드 밴드 의 정보 가 너무 많아 Nginx 설정 크기 를 초과 했다 고 생각 할 수 있 습 니 다.
프론트 엔 드 에서 사용 하 는 쿠키 가 너무 클 가능성 이 높 습 니 다.
문 제 를 어떻게 해결 합 니까?
방법 1 은 더 이상 말 하지 않 겠 습 니 다. 전단 에서 코드 를 고 쳐 야 하고 업무 논 리 를 고 쳐 야 할 수도 있 습 니 다.
Nginx 설정 을 어떻게 수정 하 는 지 직접 말 해 보 세 요. 간단 하고 빠 릅 니 다.
vim nginx.conf
http 모듈 에서 증가:
proxy_buffer_size 128k;
proxy_buffers 32 32k;
proxy_busy_buffers_size 128k;
지식 을 보충 하 다
Nginx 의 기본 헤더 길이 상한 선 은 4k 입 니 다. 이 값 을 초과 하면 잘못 보 고 됩 니 다.
헤더 정보 요청 이 초과 되면 Nginx 는 400 오 류 를 되 돌려 줍 니 다.
다음 두 개의 매개 변 수 를 통 해 Nginx 의 header 상한 선 을 조정 할 수 있 습 니 다.
client_header_buffer_size 16k;
large_client_header_buffers 4 16k;
다음은 이 두 개의 매개 변수 와 그들 간 의 관련 관 계 를 설명 한다.
nginx 에서 header 를 처리 하 는 방법:
request_line
, 그 다음 request_header
.buffer
분배 전략 은 같다.client_header_buffer_size
설 정 된 값 에 따라 하나 buffer
를 분배 하고, 분 배 된 buffer
이 수용 되 지 않 으 면 request_line
/ request_header
설 정 된 매개 변수 에 따라 다시 분배 large_client_header_buffers
하고, large_buffer
여전히 수용 되 지 않 으 면 414 (처리 large_buffer
/ 400 (처리 request_line
오 류 를 되 돌려 줍 니 다.request_header
이 매우 크다 면 header
을 사용 해 야 메모리 분 배 를 한 번 줄 일 수 있 습 니 다.get 요청 에 대해 요청 문자열 이 너무 긴 문 제 를 해결 합 니 다:
get 요청 에 대하 여 우 리 는 다른 두 설정 을 수정 하여 요청 문자열 의 긴 문 제 를 해결 할 수 있 습 니 다.
client_header_buffer_size
문법:client_header_buffer_size size
기본 값: 1k 사용 필드: http, server 라 는 명령 은 클 라 이언 트 가 요청 한 http 헤드 버퍼 크기 를 지정 합 니 다. 대부분의 경우 다음 헤드 요청 의 크기 는 1k 보다 크 지 않 지만 wap 클 라 이언 트 에서 온 큰 쿠키 가 있 으 면 1k 보다 클 수 있 습 니 다. Nginx 는 더 큰 버퍼 에 할당 합 니 다. 이 값 은
client_header_buffer_size
에서 설정 할 수 있 습 니 다.large_client_header_buffers
문법:large_client_header_buffers number size
기본 값:
large_client_header_buffers
4 4k / 8k 사용 필드: http, server 명령 은 클 라 이언 트 가 요청 한 비교적 큰 헤더 파일 을 버퍼 의 최대 값 으로 지정 합 니 다. 요청 한 URI 크기 가 이 값 을 초과 하면 서버 는 'Request URI too large' (414) 를 되 돌려 줍 니 다. 마찬가지 로 요청 한 머리 필드 가 이 값 보다 크 면 서버 는 'Bad request' (400) 를 되 돌려 줍 니 다.버퍼 는 수요 에 따라 분 리 됩 니 다.기본 버퍼 크기 는 운영 체제 의 페이지 파일 크기 입 니 다. 보통 4k 또는 8k 입 니 다. 연결 요청 이 상 태 를 large_client_header_buffers
로 바 꾸 면 이 버퍼 는 풀 립 니 다.그렇다면 왜
keep-alive
의 크기 를 수정 하면 http header
요청 문자열 이 너무 긴 문 제 를 해결 할 수 있 는 지 이상 하 게 생각 하 는 사람 이 있 을 것 이다. 이 는 GET
협의의 HTTP
요청 부터 시작 해 야 한다. 사실 GET
제출 하면 요청 한 데 이 터 는 GET
다음 URL
에 첨부 된다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
linux2에 nginx 설치설치 가능한 nginx를 확인하고, 해당 nginx를 설치한다. localhost 혹은 해당 ip로 접속을 하면 nginx 화면을 볼 수 있다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.