고성능 웹 서버 를 구축 하 는 Nginx 설치 및 설정 설명 (2.1)

8247 단어 nginx
이 장 에 서 는 Nginx 를 가 져 오 는 방법 과 Nginx 를 설정, 컴 파일, 설치 하여 실행 하 는 방법 을 소개 합 니 다. 가장 복잡 한 configure 과정 과 Nginx 관련 매개 변 수 를 컴 파일 하 는 방법 에 대한 소 개 를 깊이 있 게 소개 합 니 다.
 지난 장 에서 우 리 는 Nginx 가 무엇 인지, 우리 가 무엇 을 할 수 있 는 지, 그리고 Nginx 의 특징 을 간단하게 알 고 있 습 니 다. 다음은 Nginx 를 어떻게 컴 파일 하고 설정 하 는 지 깊이 소개 합 니 다.
2.1 Nginx 설치 전 준비
 nginx 소스 코드 를 받 자마자 바로 설치 할 수 있 는 것 이 아니 라 Ngin 을 설치 하려 면 다음 과 같은 기본 조건 을 가 져 야 합 니 다. 다음 과 같 습 니 다.
(1) Linux 시스템 의 커 널 은 2.6 이상 2.6 이 어야 합 니 다.
 우선 리 눅 스 2.6 이상 버 전의 운영 체제 가 필요 합 니 다. 리 눅 스 2.6 이상 의 커 널 이 epoll 을 지원 하기 때문에 리 눅 스에 서 select 나 poll 을 사용 하여 사건 의 다 중 재 활용 을 해결 하 는 것 은 높 은 병행 압력 문 제 를 해결 할 수 없습니다.우 리 는 uname - a 명령 을 사용 하여 리 눅 스 커 널 버 전 을 조회 할 수 있 습 니 다. 예 를 들 어:
# uname -a

(2) GCC 컴 파일 러
 GCC (GNU Compiler Collection) 는 C 언어 프로그램 을 컴 파일 하 는 데 사용 할 수 있다.Nginx 는 바 이 너 리 실행 가능 한 프로그램 (1.2. x 버 전에 서 일부 운영 체제 의 바 이 너 리 설치 패 키 지 를 직접 제공 하지 않 습 니 다. 그러나 이 책 은 Nginx 모듈 을 어떻게 개발 하 는 지 원본 코드 를 직접 컴 파일 하여 진행 해 야 합 니 다) 을 연구 합 니 다. 이 는 여러 가지 이유 가 있 습 니 다. 이 장 뒤에 상세 하 게 설명 할 것 입 니 다.우 리 는 GCC 를 가장 간단 한 yum 방식 으로 설치 할 수 있 습 니 다. 예 를 들 어:
# yum install -y gcc 

GCC 는 필수 컴 파일 도구 입 니 다.다음은 Nginx HTTP 모듈 을 만 들 기 위해 C + + 를 사용 합 니 다. 이 때 는 G + 컴 파일 러 를 사용 해 야 합 니 다.G + + 컴 파일 러 도 yum 으로 설치 할 수 있 습 니 다. 예 를 들 어:
# yum install -y gcc-c++ 
Linux          ,yum           ,          。

(2)PCRE

    nginx.conf , Nginx PCRE Nginx, Nginx HTTP 。 , , 。 yum :
# yum install -y pcre pcre-devel

pcre-devel PCRE , , Nginx 。 Nginx rewrite , pcre
(3)zlib 

zlib 라 이브 러 리 는 HTTP 패키지 의 내용 을 gzip 형식 으로 압축 하 는 데 사 용 됩 니 다. nginx. conf 에 gzip on 을 설정 하고 특정한 유형의 (content - type) HTTP 응답 을 gzip 으로 압축 하여 네트워크 전 송 량 을 줄 이면 컴 파일 할 때 zlib 를 Nginx 에 번역 해 야 합 니 다.그 yum 설치 방식 은 다음 과 같다.
# yum install -y zlib zlib-devel

,zlib ,zlib-devel 。

(4)OpenSSL


서버 가 HTTP 만 지원 하 는 것 이 아니 라 더 안전 한 SSL 프로 토 콜 에서 HTTP 를 전송 해 야 한다 면 OpenSSL 을 가 져 야 합 니 다.또한 MD5, SHA 1 등 해시 함 수 를 사용 하려 면 설치 해 야 합 니 다.그 yum 설치 방식 은 다음 과 같다.
# yum install -y openssl openssl-devel

     4      Web            。

Nginx 는 고도 로 자유 화 된 웹 서버 로 많은 모듈 에서 지원 합 니 다.이 모듈 들 은 우리 의 사용 수요 에 따라 맞 춤 형 으로 만 들 수 있 으 며, 만약 일부 모듈 이 사용 할 필요 가 없다 면 전혀 신경 쓸 필요 가 없다.마찬가지 로 어떤 모듈 을 사 용 했 는데 이 모듈 이 zlib 나 OpenSSL 등 과 유사 한 제3자 라 이브 러 리 를 사용 했다 면 이 소프트웨어 를 먼저 설치 해 야 한다.
(5)      
     nginx ,     nginx       ,      ,        ,        ,        :

Nginx 소스 코드 저장 디 렉 터 리
  이 디 렉 터 리 는 홈 페이지 에서 다운로드 한 Nginx 소스 파일 과 제3자 또는 저희 가 작성 한 모듈 소스 파일 을 설치 하 는 데 사 용 됩 니 다.여기 서 다운로드 한 소스 패 키 지 를 기본 값 으로 / usr / local / src 디 렉 터 리 에 저장 합 니 다.
Nginx 컴 파일 단계 에서 생 성 된 중간 파일 저장 디 렉 터 리
  이 디 렉 터 리 는 configure 명령 이 실 행 된 후 생 성 된 원본 파일 과 디 렉 터 리, make 명령 이 실 행 된 후 생 성 된 대상 파일 과 최종 연결 에 성공 한 바 이 너 리 파일 에 사 용 됩 니 다.기본적으로 configure 명령 은 이 디 렉 터 리 를 obbs 라 고 명명 하고 Nginx 소스 코드 디 렉 터 리 에 놓 습 니 다.여기 서 원본 패 키 지 를 압축 해제 한 후 기본 값 으로: / usr / local / src 디 렉 터 리 에 놓 습 니 다.
디 렉 터 리 배치 (디 렉 터 리 설치)
  이 디 렉 터 리 는 실제 Nginx 서비스 가 실행 되 는 동안 필요 한 바 이 너 리 파일, 프로필 등 을 저장 합 니 다. 기본적으로 이 디 렉 터 리 는 / usr / local / nginx 입 니 다. 물론 필요 에 따라 다른 경로 로 설치 할 수도 있 습 니 다. 컴 파일 할 때 설치 경 로 를 지정 하면 됩 니 다. 기본 경 로 는 다음 과 같 습 니 다.
nginx 설치 경로: / usr / local / nginx      (설치 경 로 를 스스로 지정 하여 컴 파일 할 때: "-- prefix = path" 매개 변 수 를 지정 하면 됩 니 다)
nginx 설정 파일 경로: / etc / nginx / conf   (설치 경 로 를 스스로 지정 하여 컴 파일 할 때: "-- conf - path = path" 매개 변 수 를 지정 하면 됩 니 다)
다른 경 로 는 자신의 수요 에 따라 맞 춤 형 제작 이 가능 합 니 다!
로그 파일 저장 디 렉 터 리
  로그 파일 은 보통 크기 가 큽 니 다. Nginx 의 바 텀 구 조 를 연구 할 때 debug 급 로 그 를 열 어야 합 니 다. 이 단계 의 로 그 는 매우 상세 하여 로그 파일 의 크기 가 빠르게 증가 할 수 있 습 니 다. 더 큰 디스크 공간 을 가 진 디 렉 터 리 를 미리 할당 해 야 합 니 다. 기본 값 은 / var / log / nginx 디 렉 터 리 아래 에 있 습 니 다.
(6) nginx 와 관련 된 시스템 커 널 조정
  기본 적 인 리 눅 스 커 널 파 라 메 터 는 가장 통용 되 는 장면 을 고려 하기 때문에 높 은 동시 방문 을 지원 하 는 웹 서버 의 정의 에 부합 되 지 않 기 때문에 리 눅 스 커 널 파 라 메 터 를 수정 하여 Nginx 가 더욱 높 은 성능 을 가 질 수 있 도록 해 야 합 니 다.
  커 널 을 최적화 할 때 할 수 있 는 일이 많 지만 저 희 는 업무 특성 에 따라 조정 합 니 다. Nginx 가 정적 웹 콘 텐 츠 서버, 역방향 프 록 시 서버 또는 이미지 미리 보기 기능 (실시 간 압축 그림) 을 제공 합 니 다.서버 의 경우 커 널 매개 변 수 를 조정 하 는 것 이 다 릅 니 다. Nginx 가 더 많은 병렬 요청 을 지원 하 는 TCP 네트워크 매개 변수 에 대해 서 만 설명 합 니 다.
우선, 커 널 파 라 메 터 를 변경 하려 면 / etc / sysctl. conf 를 수정 해 야 합 니 다. 예 를 들 어 가장 많이 사용 되 는 설정:
fs.file-max = 999999    
net.ipv4.tcp_tw_reuse = 1 
net.ipv4.tcp_keepalive_time = 600 
net.ipv4.tcp_fin_timeout = 30 
net.ipv4.tcp_max_tw_buckets = 5000 
net.ipv4.ip_local_port_range = 1024    61000  
net.ipv4.tcp_rmem = 4096 32768 262142  
net.ipv4.tcp_wmem = 4096 32768 262142  
net.core.netdev_max_backlog = 8096 
net.core.rmem_default = 262144 
net.core.wmem_default = 262144 
net.core.rmem_max = 2097152 
net.core.wmem_max = 2097152 
net.ipv4.tcp_syncookies = 1 
net.ipv4.tcp_max_syn.backlog=1024 
그리고 sysctl - p 명령 을 실행 하여 상기 수정 사항 을 적용 합 니 다.
위의 매개 변수 의 미 는 다음 과 같다.
file - max: 이 매개 변 수 는 프로 세 스 (예 를 들 어 워 커 프로 세 스) 가 동시에 열 수 있 는 최대 핸들 수 를 표시 합 니 다. 이 매개 변 수 는 최대 병렬 연결 수 를 직접 제한 하고 실제 상황 에 따라 설정 해 야 합 니 다.
tcp tw reuse: 이 매개 변 수 는 TIME - WAIT 상태의 socket 을 새로운 TCP 연결 에 다시 사용 할 수 있 도록 1 로 설정 되 어 있 습 니 다. 서버 에 TIME - WAIT 상태의 연결 이 많 기 때 문 입 니 다.
tcp keepalive time: 이 인 자 는 keepalive 가 활성화 되 었 을 때 TCP 가 keepalive 메 시 지 를 보 내 는 빈 도 를 표시 합 니 다. 기본 값 은 2 시간 입 니 다. 이 인 자 를 작 게 설정 하면 잘못된 연결 을 빨리 정리 할 수 있 습 니 다.
tcp fin timeout: 이 매개 변 수 는 서버 가 자발적으로 연결 을 닫 을 때 socket 이 FIN - WAIT - 2 상태 로 유지 되 는 최대 시간 을 나 타 냅 니 다. tcp max tw buckets: 이 매개 변 수 는 운영 체제 가 TIME WAIT 소켓 의 최대 값 을 허용 하 는 것 을 나 타 냅 니 다. 이 숫자 를 초과 하면 TIME WAIT 소켓 이 즉시 제거 되 고 경고 메 시 지 를 인쇄 합 니 다. 이 매개 변 수 는 기본 값 은 180 000 이 며, 너무 많은 TIME WAI 입 니 다.T 소켓 은 웹 서버 를 느리게 만 듭 니 다. tcp max syn backlog: 이 매개 변 수 는 TCP 세 번 의 악수 생 성 단계 에서 SYN 요청 대기 열의 최대 길 이 를 수신 하 는 것 을 의미 합 니 다. 기본 값 은 1024 입 니 다. 이 매개 변 수 를 크게 설정 하면 Nginx 가 새 연결 을 수락 하지 못 할 때 리 눅 스 는 클 라 이언 트 가 시작 하 는 연결 요청 을 잃 어 버 리 지 않 습 니 다. ip local port range: 이 매개 변 수 는 UD 에서 정의 합 니 다.P 와 TCP 연결 에 있 는 로 컬 (연 결 된 원 격) 포트 의 값 범위 입 니 다. net. ipv4. tcp rmem: 이 매개 변 수 는 TCP 수신 캐 시 (TCP 수신 슬라이딩 창 에 사용) 의 최소 값, 기본 값, 최대 값 을 정의 합 니 다. net. ipv4. tcp wmem: 이 매개 변 수 는 TCP 전송 캐 시 (TCP 전송 슬라이딩 창 에 사용) 를 정의 합 니 다.최소 값, 기본 값, 최대 값 입 니 다. netdev max backlog: 네트워크 카드 가 패 킷 을 받 는 속도 가 커 널 처리 속도 보다 클 때 이 패 킷 을 저장 하 는 대기 열 이 있 습 니 다. 이 매개 변 수 는 이 대기 열의 최대 값 을 표시 합 니 다.
rmem default: 이 매개 변 수 는 커 널 소켓 수신 캐 시 구역 의 기본 크기 를 표시 합 니 다.
wmem default: 이 매개 변 수 는 커 널 소켓 이 캐 시 영역 에 보 내 는 기본 크기 를 표시 합 니 다.
rmem max: 이 매개 변 수 는 커 널 소켓 수신 캐 시 구역 의 최대 크기 를 표시 합 니 다.
wmem max: 이 매개 변 수 는 커 널 소켓 이 캐 시 영역 을 보 내 는 최대 크기 를 표시 합 니 다.
슬라이딩 창의 크기 와 소켓 캐 시 영역 은 동시 연결 수 에 어느 정도 영향 을 줄 수 있 습 니 다. 모든 TCP 연결 은 TCP 슬라이딩 창 을 유지 하기 위해 메모 리 를 소모 합 니 다. 이 창 은 서버 의 처리 속도 에 따라 수축 되 거나 확 장 됩 니 다.
매개 변수 wmem max 의 설정 은 물리 적 메모리 의 총 크기, Nginx 병행 처리 의 최대 연결 수량 을 균형 있 게 해 야 합 니 다 (nginx. conf 의 worker processes 와 worker connections 매개 변수 에 의 해 결 정 됩 니 다)확실 합 니 다. 물론 서버 에 Out Of Memory 문제 가 발생 하지 않도록 합 병 량 을 높이 기 위해 미끄럼 창 크기 를 낮 추 는 것 은 적절 하지 않 습 니 다. 미끄럼 창 이 너무 작 으 면 빅 데이터 전송 속도 에 영향 을 줄 수 있 기 때 문 입 니 다. rmem default, wmem default, rmem max, wmem max 등 4 개 매개 변수의 설정 은 우리 의 업무 특성 과 실제 하드웨어 원가 에 따라 종합 되 어야 합 니 다.고려 합 니 다. tcp syncookies: 이 매개 변 수 는 성능 과 상 관 없 이 TCP 의 SYN 공격 을 해결 하 는 데 사 용 됩 니 다.
이로써 전체 nginx 에 필요 한 설치 조건 이 완성 되 었 습 니 다. 다음은 Nginx 설치 과정 을 소개 하 겠 습 니 다.

좋은 웹페이지 즐겨찾기