Nginx 가 역방향 에이전트 (proxy) 일 때의 buffer 명령
                                            
 5049 단어  nginx
                    
이 는 Nginx 가 반 대 했 을 때의 행동 에 대한 해석 을 설명 할 것 이다.
Nginx 가 요청 한 행동 을 처리 합 니 다.
Nginx 는 설정 한
proxy_pass 만 무조건 실행 ngx_http_read_client_request_body 클 라 이언 트 의 body 를 읽 으 려 고 시도 합 니 다.body 를 휴대 하지 않 기 를 요청 합 니 다.
흔히 볼 수 있 는 방법.이때
GET/HEAD 에서 Content - length 를 판단 하고 없 거나 값 이 0 이면 백 엔 드 와 연결 하 는 것 ngx_http_read_client_request_body 을 직접 실행 합 니 다.바디 휴대 요청
POST 방법 에서 흔히 볼 수 있다.이때 Nginx 는 읽 기
ngx_http_upstream_init (즉 읽 기 header 를 마 쳤 을 때 upstream 에 바로 연결 되 지 않 고 client 의 완전한 \r
\r
 을 읽 은 후에 야 계속 실행 body 합 니 다. 즉, 이때 에 야 upstream 과 연결 한 다음 에 데 이 터 를 보 냅 니 다.요청 관련 명령:
proxy_request_buffering off;
  Nginx 가 client
ngx_http_upstream_init 를 제때에 읽 지 못 했 을 때 upstream 에 바로 연결 할 수 있 습 니 다.다시 말 하면 Nginx 는 client 의 Header 를 받 고 upstream 에 연결 하여 보 낸 것 이다.또한 일부 바디 가 오 면 바로 upstream, 이른바 스 트 리밍 으로 전송 된다.proxy_pass_request_body off;
  요청 한 것
body 을 버 릴 수 있 습 니 다.client_body_buffer_size 100;
  위 에서 말 했 듯 이 Nginx 는 기본적으로 캐 시 요청
body 을 합 니 다. 캐 시 는 어디 에 있 습 니까?처음에는 메모리 에 저 장 됩 니 다. 그러나 현재 캐 시 된 body 이 body 지정 한 크기 보다 크 면 현재 메모리 에 있 는 client_body_buffer_size 을 파일 에 저장 합 니 다.Nginx 가 저장 body 에 대한 데이터 구 조 는 body:typedef struct {
    ngx_temp_file_t                  *temp_file;/*       */
    ngx_chain_t                      *bufs;/*   bufs,filter      */
    ngx_buf_t                        *buf;/*   client_body_buffer_size      read_buf*/
    off_t                             rest;/**            , content-length - alreadyread*/
    off_t                             received;
    ngx_chain_t                      *free;
    ngx_chain_t                      *busy;
    ngx_http_chunked_t               *chunked;
    ngx_http_client_body_handler_pt   post_handler;/*      ,        */
} ngx_http_request_body_t;
  Nginx 응답 처리
응답
header 는 즉시 client 에 전송 되 고 자신 과 upstream 의 연결 을 끝 냅 니 다. 이것 은 할 말 이 없습니다.
응답 휴대용 바디
기본적으로 요청 과 유사 하 게 Nginx 는
ngx_http_request_body_t 와 header 캐 시 를 완전 부 body 로 받 은 후에 야 함께 응답 을 client 에 전달 합 니 다.관련 명령 에 응답:
proxy_buffer_size 8k;
  Nginx 이 크기 로 read 신청buf, 즉 크기 는 upstream header 의 최대 길 이 를 지정 합 니 다. 응답 헤드 가 이 길 이 를 초과 하면 Nginx 는
body 오 류 를 보고 하고 client 는 502 를 받 습 니 다.postpone_output 0;
  Nginx 는 업무 절차 에서 즉시 send 를 호출 하여 응답
upstream sent too big header 을 보 냅 니 다.그러나 send 의 바 텀 구현: header 에서 ngx_http_write_filter 기본 값 이 있 기 때문에 postpone_output 전송 지연 (이 한도 값 을 초과 하지 않 는 데 이 터 는 캐 시 됩 니 다). header 표지 가 있 는 buf 가 나타 날 때 까지 모든 응답 을 한꺼번에 보 냅 니 다 (예 를 들 어 body 의 마지막 부분 데이터 last 보다 위).last 의 값 은 모든 응답 데이터 에 유효 합 니 다. postpone_output 와 header 를 포함 합 니 다. 그러나 Nginx 업무 절차 에서 body 를 처리 할 때 기본 값 은 바로 send 입 니 다.따라서 설정 body 만 0 으로 하고 응답 postpone_output 을 즉시 client 에 보 냅 니 다. header 을 어떻게 처리 하 는 지 아래 명령 을 보 세 요.proxy_buffering off;
  이 명령 은 Nginx 가 응답 body 에 캐 시 하지 않 고 upstream 데 이 터 를 받 은 후 즉시 send 를 클 라 이언 트 에 보 내 는 응답 스 트림 전송 입 니 다.
그렇다면 기본 적 인 상황 에서
body 열 려 있 습 니 다. body 에 많이 호응 하면 어떻게 합 니까?proxy_buffers           256 8k;
  상기 두 명령 은
proxy_buffering 열 려 있 을 때 만 유효 합 니 다 (기본 값 은 열 려 있 습 니 다). 그 역할 은 캐 시 크기 를 설정 하 는 것 입 니 다.구체 적 으로 256 개의 길이 가 8k 크기 의 read 를 개척 한 다 는 뜻 이다.buf 는 저장 proxy_buffering 에 사 용 됩 니 다. 물론 연결 이 초기 화 될 때 256 개 를 개척 하 는 것 이 아니 라 현재 buf 가 응답 body 에 저장 되 지 않 을 때 만 새로 신청 할 수 있 습 니 다. 최대 256 개의 buf 를 신청 할 수 있 습 니 다.위의 논 리 를 자세히 읽 으 면 기본적으로 2 차원 으로 나 누 어 read 를 설정 할 수 있 습 니 다.buf, Nginx 설정 자 를 더욱 유연 하 게 하고 자신의 업무 응답 크기 의 분포 에 따라 이 두 개의 값 을 설정 하여 메모 리 를 절약 하고 성능 을 제시 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.