주소
https://github.com/langsim/nginx-1.6.2-comment
소개
가독성이 좋은 글을 완성하고 싶습니다. 특수 nginx 소스 코드 주석.
주석이 추가되지 않는 콘텐츠
- spdy가 http2로 대체되었기 때문에
- 스레드 관련 코드는 적어도 버전 1.6. nginx 스레드 중 2개는 아직 실험 단계에 있습니다.
- Linux 이외의 다른 플랫폼용 코드
- epoll 이외의 다른 이벤트 모델용 코드
- 다른 컴파일러용 코드 gcc보다 .
- 메일 관련 코드.
완료 수준
- 핵심 디렉터리 60%
- 이벤트 디렉터리 20%
- http 디렉터리 10%
- os 디렉터리 80%
함수 연결 목록
- http 필터 모듈 사이에 ngx_http_top_header_filter와 ngx_http_top_body_filter가 두 개로 구성됩니다. 함수 연결 목록, 연결 목록의 함수 호출 순서는 ngx_modules 배열의 해당 모듈 순서와 반대입니다.
- http 요청 처리의 11개 단계 중 대부분은 여러 콜백 함수를 가질 수 있습니다. 동일한 단계의 콜백 함수 호출 순서는 ngx_modules 배열의 해당 모듈 순서와 동일합니다.
로그
nginx에는 기본적으로 두 개의 로그 파일이 있습니다.
- access.log: 각 http 요청은 그 안에 한 줄의 레코드를 생성합니다.
- error.log: nginx가 실행 중일 때 발생하는 일부 일반, 오류 또는 디버그 로그입니다.
프로세스 모델
nginx가 시작된 후 4가지 프로세스 상태가 나타날 수 있습니다.
- 포그라운드에서 실행되는 단일 프로세스
- 단일 프로세스 데몬 프로세스 모드
- 마스터 프로세스, 하나(또는 그 이상)의 작업자 프로세스, 하나(또는 0)의 캐시 관리자 프로세스 및 하나(또는 0)의 캐시로더 프로세스가 포그라운드에서 함께 실행됩니다.
- 마스터 프로세스 , 하나 이상의 작업자 프로세스, 하나(또는 0)의 캐시 관리자 프로세스 및 하나(또는 0)의 캐시 로더 프로세스가 데몬 프로세스 상태에서 실행됩니다.
- 마스터 프로세스는 시작 시 다른 프로세스를 시작하는 데 사용되고, 시작 후에는 다른 프로세스를 관리하는 데 사용됩니다.
- 링크 요청을 실제로 처리하는 데 사용되는 워커 프로세스입니다.
- cachemanager 프로세스는 필요에 따라 캐시 파일을 정리하는 데 사용됩니다.
- 캐시로더 프로세스가 시작되면 요구 사항을 충족하는 캐시 파일을 메모리의 캐시 디렉터리에 인덱싱하고 요구 사항을 충족하지 않는 캐시 파일을 삭제한 다음 종료합니다.
- 시작 후 nginx를 실행하는 메인 프로세스에 시그널을 보내고 종료합니다.
프로세스 실행 상태 전환
- 구성 파일 다시 로드(reload)
- 핫 업그레이드 실행 파일
컴파일
nginx의 컴파일은 Linux 플랫폼의 일반 오픈 소스 소프트웨어 컴파일과 동일합니다. 둘 다 ./configure && make && make install을 실행합니다.
nginx는 신호를 사용합니다
- TERM, INT를 사용하여 빠르게 종료
- QUIT를 통해 정상적으로 종료
- HUP를 통해 원활하게 다시 시작하고 구성을 다시 로드합니다. file
- USR1은 로그 파일을 다시 열어 로그를 자를 때 더욱 유용합니다
- USR2는 실행 프로그램을 원활하게 업그레이드합니다
- WINCH는 작업 프로세스를 차분하게 종료합니다
nginx 메모리 풀
nginx에는 두 개의 메모리 풀이 있습니다
- 공유 메모리에 메모리를 할당하기 위한 메모리 풀
- 일반 메모리에 메모리를 적용하기 위한 메모리 풀 메모리의 효율적인 사용
nginx에서 사용하는 계산 해시 알고리즘
- crc32
- crc16
- sha1
- murmurhash
- md5
nignx 프로세스 통신 및 동기화
- 공유 메모리 사용
- 시그널
- unix 제품군 어댑터
').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i ').text(i));
};
$numbering.fadeIn(1700);
});
});
위 내용은 관련 내용을 포함하여 (개인 오픈소스) nginx 소스코드 주석을 소개한 것입니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.