Nginx 411 오류 반환
5985 단어 nginx
오늘 form 을 제출 할 때 411 오류 가 발생 했 습 니 다. 그 당시 에 저 는 과문 하고 411 을 처음 만 났 습 니 다. 조사 한 후에 멘 붕 이 발생 했 습 니 다. nginx 가 직접 요 구 를 되 돌려 주 었 습 니 다. 깊이 조사 한 결과 이 문 제 는 매우 쉽게 발생 할 수 있 었 습 니 다. 그래서 저 는 이상 하 게 예전 의 개발 에서 만난 적 이 없 었 습 니까?그러나 나 쁜 습관 으로 인 한 문제 이기 도 합 니 다. 생산 환경 테스트 환경 은 nginx 가 없 는데 유독 제품 서버 에 서 는 '나 쁘 죠?'
411 원인
nginx 가 내 놓 은 공식 설명 은 nginx 탄 411 회 를 유발 하 는 세 가지 상황 이 있다.
제 장면 은 이 렇 습 니 다. httpclient 4 (자바) 로 api 서 비 스 를 호출 합 니 다. 이 api 가 사용 하 는 server 는 nginx 입 니 다. multipart 를 사용 하여 그림 파일 을 제출 할 때 파일 의 실제 길 이 를 무시 하거나 생략 했 기 때문에 (firebug 를 통 해 발견) request header 에 Content - Length 가 전혀 없습니다. 그것 은 위의 두 번 째 상황 에 부합 합 니 다.
코드 를 고치다
그리고 나 서 나 는 코드 수정 을 통 해 해결 하려 고 했 지만 httpclient 는 매우 딱딱 해서 나 는 한 마디 썼 다.
1
header httppost.setHeader("Content-Length", "0");
그것 은 바로 잘못 보고 했다.
1
org.apache.http.ProtocolException: Content-Length header already present at org.apache.http.protocol.RequestContent.process(RequestContent.java:67) ......
가방 밖에서 고치 기 가 쉽 지 않 은 것 같 습 니 다. 됐 습 니 다. 계속 구 글 을 하 세 요. 합 리 적 인 방법 이 있 을 겁 니 다. 코드 를 바 꾸 지 마 세 요.
다시 컴 파일 nginx
그래서 구 글 은 한 바퀴 돌 고 이 문장 똑 같은 문 제 를 만 났 습 니 다. 위 에서 말 한 세 번 째 상황 일 뿐 입 니 다. 그런데 다행히도 제 가 해결 하 는 방법 이 똑 같 을 수 있다 는 것 을 깨 달 았 습 니 다. nginx 에 Chunkin 모듈 을 추가 해 주 었 습 니 다. 한다 면 하 겠 습 니 다. nginx 의 wik i 와 이 문장 를 참고 하여 외부 모듈 을 순조롭게 추가 할 수 있 습 니 다. 쉽게 말 하면 다음 과 같은 몇 가지 단계 입 니 다.
nginx -V
이전에 nginx 를 컴 파일 했 을 때의 인 자 를 찾 아 기록 하 세 요 ./configure
그리고 매개 변 수 를 더 해 야 한다. 특히 --add-module=/path/to/your/module
make
(당장 make install
이것 이 야 말로 가장 기술적 인 일이 다.
cp obj/nginx
오래된 nginx 실행 가능 한 파일 의 위치 까지 아직 뛰 고 있 기 때문에 인자 -f
kill -USR2 nginx
ps aux | grep nginx
로 메 인 프로 세 스 를 제외 하고 워 커 프로 세 스 가 하나 더 있 습 니 다. 그 다음 에 ps 는 새로운 nginx 프로 세 스 가 시작 되 고 새로운 워 커 프로 세 스 도 시작 되 는 것 을 발견 할 수 있 습 니 다. 이때 동시에 작업 을 합 니 다. kill - WHINCH nginx
오래된 nginx 프로 세 스 가 새로운 요청 을 처리 하지 않 게 합 니 다. 시간 이 지나 면 ps 를 사용 하면 오래된 worker process 가 사라 지고 멈 추 는 것 을 볼 수 있 습 니 다. 이 때 모든 요청 은 새로운 nginx 에 게 맡 깁 니 다. kill -QUIT nginx
오래된 프로 세 스 를 종료 하면 새로운 프로 세 스 를 사용 할 수 있 습 니 다. kill -HUP nginx
reload 프로필 없 이 오래된 nginx kill -QUIT nginx
새로운 Nginx 인 스 턴 스 를 여 유 롭 게 닫 습 니 다 kill -TERM nginx
이거 랑 위 에 거 둘 중 에 하 나 를 고 를 수 있어 요. nginx 프로필 수정
그리고 새 모듈 이 유효 하도록 설정 을 바 꿔 야 합 니 다.
1
2
3
4
5
6
7
8
9
10
11
12
chunkin on; error_page 411 = @my_411_error; location @my_411_error { chunkin_resume; } location /foo { # your fastcgi_pass/proxy_pass/set/if and # any other config directives go here... } ...
이렇게 고 친 후에 reload nginx 는 정상적으로 작 동 할 수 있 습 니 다. 상세 한 설정 방법 은 참고 하 시기 바 랍 니 다 wiki 감사합니다.
그러면 여기까지 하기 전의 문 제 는 해결 되 었 습 니 다. 기록 해 보 세 요. 다른 환경 에서 비슷 한 문 제 를 만 나 지 못 했 기 때 문 입 니 다.
이상
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.