nginx에서 http 요청을 처리하는 것은 nginx의 가장 중요한 기능이자 가장 복잡한 부분입니다. 당신은 대략 실행 프로세스에 대해 이야기 할 수 있습니다
끝부터 시작 중요한 부분은 다단계 처리입니다. nginx는 요청 처리를 11단계로 나눕니다. 즉, nginx는 요청 라인과 요청 헤더를 읽은 후 요청을 ngx_http_request_t 구조로 캡슐화합니다. 각 단계의 핸들러는 이 ngx_http_request_t에 따라 URI 다시 작성, 권한 제어, 경로 검색, 콘텐츠 생성 및 로깅 등의 요청을 처리합니다.
결과를 클라이언트에 반환합니다. ngx_http_process_request_line 함수의 기능은 요청 라인을 구문 분석하는 것입니다. 또한 네트워크 IO 작업이 포함되므로 짧은 요청 라인이라도 한 번에 읽지 못할 수 있으므로 이전 ngx_http_init_request 함수에서는 ngx_http_process_request_line 함수를 읽기 이벤트의 처리 함수로 설정했습니다. , 고유한 ngx_event_t * 유형 매개변수만 있으며, 함수 시작 시 시간 초과 이벤트인지 여부도 확인해야 합니다. 그렇다면 요청과 연결을 닫고, 그렇지 않으면 일반 구문 분석 프로세스를 시작합니다. 먼저 ngx_http_read_request_header 함수를 호출하여 데이터를 읽습니다.
다단계 처리는 nginx 모듈에서 가장 중요한 부분입니다. 왜냐하면 타사 모듈도 여기에 등록되어 있기 때문입니다.
예를 들어, 누군가 페이지 캐싱을 위해 nginx와 memcache를 사용하는 타사 모듈을 작성했는데, memcache를 redis 클러스터로 대체할 수도 있습니다. 잠깐,
그리고 nginx 다단계 처리는 Python 및 golang 웹 프레임워크의 미들웨어와 다소 유사합니다. 후자는 주로 데코레이터 모드를 사용하여 레이어별로 핸들러를 캡슐화하는 반면 nginx는 배열( 연결된 목록)을 사용하여 여러 단계의 핸들러를 결합한 다음 핸들러 체인에 따라 실행합니다.클라이언트가 보낸 URL(Uniform Resource Locator)은 서버의 특정 경로에 있는 리소스에 해당합니다. 해야 할 일은 URL을 로컬 파일 시스템의 경로에 매핑한 다음 해당 파일을 읽고 클라이언트에 반환하는 것입니다. 그러나 이것은 초기 인터넷의 요구에 불과했습니다. 현재 인터넷에는 보안 및 권한 제어, 멀티미디어 콘텐츠 및 동적 웹 페이지와 같은 문제를 처리하기 위한 웹 서버가 필요한 다양하고 복잡한 요구 사항이 있습니다. 이러한 복잡한 요구 사항으로 인해 웹 서버는 더 이상 짧은 프로그램이 아니라 신중하게 설계되고 모듈화되어야 하는 시스템이 되었습니다.
nginx의 우수한 모듈성은 요청 처리 프로세스의 다단계 분할에 반영됩니다. 다단계 처리 프로세스는 하나의 nginx 프로세스가 여러 단계에서 여러 요청을 동시에 처리할 수 있는 것과 같습니다. nginx를 사용하면 개발자는 시작 단계에서 처리 프로세스의 모든 단계에서 모듈을 등록할 수 있습니다. nginx는 각 단계에서 등록된 모든 모듈 처리 기능을 순서대로 실행 체인으로 구성합니다.더 많은 Nginx 관련 기술 기사를 보려면 Nginx 사용법 튜토리얼
칼럼을 방문하세요!위 내용은 nginx가 http 요청을 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!