Nginx 설치, 설정, 최적화
apt - get 설 치 를 통 해 여기 나 저기 몇 줄 의 설정 을 수정 합 니 다. 자, 웹 서버 가 있 습 니 다!그리고 대부분의 경우, 일반적인 설치 nginx 는 당신 의 사이트 에 있어 서 이미 잘 작 동 할 수 있 습 니 다.
그러나 만약 당신 이 정말 nginx 의 성능 을 압출 하고 싶다 면, 당신 은 좀 더 깊이 들 어가 야 합 니 다.본 논문 에서 저 는 Nginx 의 어떤 설정 을 미세 조정 하여 대량의 클 라 이언 트 를 처리 할 때의 성능 을 최적화 시 킬 수 있 는 지 설명 할 것 입 니 다.주의해 야 할 것 은 이것 은 전면적 인 미조정 지침 이 아니다.이것 은 성능 설정 을 미세 조정 으로 향상 시 킬 수 있 는 간단 한 미리 보기 입 니 다.당신 의 상황 은 다 를 수 있 습 니 다.
기본 적 인 (최 적 화 된) 설정 은 우리 가 수정 할 유일한 파일 은 nginx. conf 입 니 다. 그 중에서 Nginx 의 서로 다른 모듈 의 모든 설정 을 포함 합 니 다.서버 의 / etc / nginx 디 렉 터 리 에서 nginx. conf 를 찾 을 수 있 습 니 다.우선, 우 리 는 전체 설정 에 대해 이야기 한 다음 에 파일 에 있 는 모듈 에 따라 어떤 설정 이 대량의 클 라 이언 트 가 방문 할 때 좋 은 성능 을 가 질 수 있 는 지, 왜 그들 이 성능 을 향상 시 킬 수 있 는 지 에 대해 이야기 할 것 이다.이 글 의 끝 에 완전한 프로필 이 있 습 니 다.고 층 설정 nginx. conf 파일 에서 Nginx 의 몇몇 고급 설정 은 모듈 부분 위 에 있 습 니 다.user www-data; pid /var/run/nginx.pid; worker_processes auto; worker_rlimit_nofile 100000;
user 와 pid 는 기본 설정 에 따라 야 합 니 다 - 변경 여부 가 다 르 지 않 기 때문에 이 내용 을 변경 하지 않 습 니 다.worker_processes 는 nginx 가 대외 적 으로 웹 서 비 스 를 제공 할 때의 worder 프로 세 스 수 를 정의 합 니 다.가장 좋 은 값 은 CPU 핵의 수량, 데 이 터 를 저장 하 는 하드디스크 의 수량 과 부하 모드 를 포함 하 는 여러 가지 요소 에 달 려 있다.확실 하지 않 을 때 사용 가능 한 CPU 커 널 수로 설정 하 는 것 이 좋 은 시작 입 니 다. ("auto" 로 설정 하면 자동 으로 감지 하려 고 시도 합 니 다.)worker_rlimit_nofile 에서 워 커 프로 세 스 의 최대 열 림 파일 수 제한 을 변경 합 니 다.설정 하지 않 았 다 면 이 값 은 운영 체제 의 제한 입 니 다.설정 후 운영 체제 와 Nginx 는 "ulimit - a" 보다 더 많은 파일 을 처리 할 수 있 기 때문에 이 값 을 높 게 설정 하면 nginx 는 "too many open files" 문제 가 없 을 것 입 니 다.Events 모듈 events 모듈 에는 nginx 의 모든 처리 연결 설정 이 포함 되 어 있 습 니 다.
events {
worker_connections 2048;
multi_accept on;
use epoll;
}
worker_connections 설정 은 워 커 프로 세 스 가 동시에 열 수 있 는 최대 연결 수 입 니 다.위 에서 언급 한 worker 를 설정 하면rlimit_nofile, 우 리 는 이 값 을 매우 높 게 설정 할 수 있 습 니 다.최대 클 라 이언 트 수도 시스템 의 사용 가능 한 socket 연결 수 에 의 해 제한 되 기 때문에 실제 와 맞지 않 는 높이 를 설정 하 는 것 은 좋 을 것 이 없다 는 것 을 기억 하 세 요.multi_accept 는 nginx 에 게 새로운 연결 알림 을 받 은 후에 가능 한 한 많은 연결 을 받 도록 알려 줍 니 다.use 설정 은 클 라 이언 트 스 레 드 를 재 활용 하 는 폴 링 방법 입 니 다.리 눅 스 2.6 + 를 사용한다 면 epoll 을 사용 해 야 합 니 다.만약 당신 이 * BSD 를 사용한다 면, 당신 은 kqueue 를 사용 해 야 합 니 다.이벤트 폴 링 에 대해 더 알 고 싶 으 세 요?위 키 피 디 아 를 보 세 요.HTTP 모듈 HTTP 모듈 은 nginx http 처리 의 모든 핵심 기능 을 제어 합 니 다.여 기 는 아주 적은 설정 만 있 기 때문에 우 리 는 설정 의 일부분 만 선택 합 니 다.이 모든 설정 은 http 모듈 에 있어 야 합 니 다. 심지어 이 설정 에 특별히 주의 하지 않 을 것 입 니 다.
http {
server_tokens off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
}
server_tokens 는 nginx 가 더 빨리 실행 되 지 는 않 지만 오류 페이지 에 있 는 nginx 버 전 숫자 를 닫 을 수 있어 안전성 에 좋 습 니 다.sendfile 은 sendfile () 이 역할 을 발휘 할 수 있 습 니 다.sendfile () 은 디스크 와 TCP socket 사이 에서 서로 데 이 터 를 복사 할 수 있 습 니 다 (또는 임의의 두 파일 설명자).Pre - sendfile 은 데 이 터 를 전송 하기 전에 사용자 공간 에서 데이터 버퍼 를 신청 합 니 다.그 다음 에 read () 로 데 이 터 를 파일 에서 이 버퍼 로 복사 하고 write () 는 버퍼 데 이 터 를 네트워크 에 기록 합 니 다.sendfile () 은 디스크 에서 OS 캐 시 로 데 이 터 를 즉시 읽 습 니 다.이 복사 본 은 커 널 에서 이 루어 졌 기 때문에 sendfile () 은 조합 read () 와 write () 및 닫 기 버퍼 를 여 는 것 보다 더 효과 적 입 니 다 (sendfile 에 관 한 것 이 많 습 니 다) tcpnopush 는 nginx 에 게 하나의 패 킷 에서 모든 헤더 파일 을 보 내 고 tcp 를 하나씩 보 내지 않 는 다 고 알려 줍 니 다.nodelay 는 nginx 에 게 데 이 터 를 캐 시 하지 말고 한 단락 의 전송 – 데 이 터 를 제때에 보 내야 할 때 이 속성 을 설정 해 야 합 니 다. 이렇게 하면 작은 데이터 정 보 를 보 낼 때 바로 반환 값 을 받 을 수 없습니다
access_log off;
error_log /var/log/nginx/error.log crit;
access_로그 설정 nginx 에서 접근 로 그 를 저장 할 지 여부 입 니 다.이 옵션 을 사용 하면 디스크 IO 를 더 빨리 읽 을 수 있 습 니 다 (aka, YOLO).error_log 는 nginx 에 게 심각 한 오 류 를 기록 할 수 밖 에 없다 고 알려 줍 니 다.
keepalive_timeout 10;
client_header_timeout 10;
client_body_timeout 10;
reset_timedout_connection on;
send_timeout 10;
keepalive_timeout 은 클 라 이언 트 에 keep - alive 링크 시간 을 초과 합 니 다.서버 는 이 시간 초과 후에 링크 를 닫 을 것 입 니 다.우 리 는 그것 을 좀 낮 게 설정 해서 ngnix 가 더 오래 일 할 수 있 도록 합 니 다.client_header_timeout 와 clientbody_timeout 은 요청 헤더 와 요청 체 (각자) 의 시간 초과 시간 을 설정 합 니 다.우리 도 이것 을 좀 낮 출 수 있다.reset_timeout_connection 은 nginx 에 응답 하지 않 는 클 라 이언 트 연결 을 닫 으 라 고 알려 줍 니 다.이것 은 클 라 이언 트 가 차지 하 는 메모리 공간 을 방출 할 것 이다.send_timeout 에서 지정 한 클 라 이언 트 의 응답 시간 초과.이 설정 은 전체 전송 기 에 사용 되 지 않 고 두 번 의 클 라 이언 트 읽 기 동작 사이 에 있 습 니 다.이 기간 동안 클 라 이언 트 가 데 이 터 를 읽 지 않 으 면 nginx 는 연결 을 닫 습 니 다
limit_conn_zone $binary_remote_addr zone=addr:5m; limit_conn addr 100;
limit_conn 은 주어진 key 에 최대 연결 수 를 설정 합 니 다.여기 키 는 addr 입 니 다. 저희 가 설정 한 값 은 100 입 니 다. 즉, 모든 IP 주소 가 최대 100 개의 연결 을 동시에 열 수 있 도록 합 니 다.limit_conn_zone 설정 은 각종 key (예 를 들 어 현재 연결 수) 의 공유 메모리 인 자 를 저장 하 는 데 사 용 됩 니 다.5m 는 5 메가바이트 입 니 다. 이 값 은 저장 (32K 5) 32byte 상태 나 (16K 5) 64byte 상태 로 충분히 설정 되 어야 합 니 다.
include /etc/nginx/mime.types;
default_type text/html;
charset UTF-8;
include 는 현재 파일 에 다른 파일 내용 을 포함 하 는 명령 일 뿐 입 니 다.잠시 후에 사용 할 MIME 형식 을 불 러 오 는 데 사용 합 니 다.
default_type 설정 파일 에 사용 할 기본 MIME - type 입 니 다.charset 는 헤더 파일 의 기본 문자 집합 을 설정 합 니 다.다음 두 가 지 는 성능 향상 에 대해 위대 한 웹 마스터 스 StackExchange 에서 설명 한다.
gzip_disable "msie6";
gzip_static on; gzip_proxied any; gzip_min_length 1000; gzip_comp_level 4; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip 는 nginx 에 게 gzip 압축 형식 으로 데 이 터 를 보 내 는 것 을 알려 줍 니 다.이것 은 우리 가 보 낸 데이터 의 양 을 줄 일 것 이다.gzip_disable 은 지정 한 클 라 이언 트 에 gzip 기능 을 사용 하지 않 습 니 다.우 리 는 우리 의 방안 을 광범 위 하 게 호 환 할 수 있 도록 IE6 또는 더 낮은 버 전 으로 설정 했다.gzip_static 는 nginx 에 게 자원 을 압축 하기 전에 미리 gzip 에서 처리 한 자원 이 있 는 지 찾 아 보라 고 알려 줍 니 다.이것 은 파일 을 미리 압축 해 야 합 니 다. (이 예 에서 주석 이 떨 어 졌 습 니 다) 최고 압축 비 를 사용 할 수 있 도록 해 줍 니 다. 그러면 nginx 는 이 파일 들 을 더 이상 압축 하지 않 아 도 됩 니 다. (더 자세 한 gzip static 정 보 를 원 하 시 면 여 기 를 클릭 하 십시오.)gzip_proxied 는 요청 과 응답 을 기반 으로 하 는 응답 흐름 을 압축 하거나 금지 합 니 다.모든 요청 을 압축 하 는 것 을 의미 하 는 any 로 설정 합 니 다.gzip_min_length 는 데이터 압축 을 위 한 최소 바이트 수 를 설정 합 니 다.만약 요청 이 1000 바이트 보다 작다 면, 우 리 는 그것 을 압축 하지 않 는 것 이 좋 습 니 다. 왜냐하면 이 작은 데 이 터 를 압축 하면 이 요청 을 처리 하 는 모든 프로 세 스 의 속 도 를 낮 출 수 있 기 때 문 입 니 다.gzip_comp_level 데이터 의 압축 등급 을 설정 합 니 다.이 등급 은 1 - 9 사이 의 임 의 수치 일 수 있 으 며, 9 는 가장 느 리 지만 압축 비 는 가장 크다.우 리 는 4 로 설정 했다. 이것 은 비교적 절충 적 인 설정 이다.gzip_type 압축 할 데이터 형식 을 설정 합 니 다.위의 예 에는 이미 몇 가지 가 있 으 니, 너 도 더 많은 형식 을 추가 할 수 있다.
# cache informations about file descriptors, frequently accessed files
# can boost performance, but you need to test those values
open_file_cache max=100000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
##
# Virtual Host Configs
# aka our settings for specific servers
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
open_file_cache 는 캐 시 를 여 는 동시에 캐 시 최대 수량 과 캐 시 시간 도 지정 합 니 다.우 리 는 20 초 이상 활동 하지 않 은 후에 제거 할 수 있 도록 상대 적 으로 높 은 시간 을 설정 할 수 있다.open_file_cache_valid 는 openfile_cache 에서 정확 한 정 보 를 감지 하 는 간격 을 지정 합 니 다.open_file_cache_min_uses 정의 openfile_cache 에서 명령 파라미터 가 활동 하지 않 는 시간 동안 가장 작은 파일 수 입 니 다.open_file_cache_errors 는 파일 을 검색 할 때 오류 정 보 를 캐 시 할 지 여 부 를 지정 합 니 다. 설정 에 파일 을 다시 추가 하 는 것 도 포함 합 니 다.저희 도 서버 모듈 을 포함 하고 있 습 니 다. 이것 은 서로 다른 파일 에서 정 의 된 것 입 니 다.서버 모듈 이 이 위치 에 없다 면 이 줄 을 수정 해서 정확 한 위 치 를 지정 해 야 합 니 다. * *완전한 설정 * *
user www-data;
pid /var/run/nginx.pid;
worker_processes auto;
worker_rlimit_nofile 100000;
events
{
worker_connections 2048;
multi_accept on;
use epoll;
}
http
{
server_tokens off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
access_log off;
error_log /var/log/nginx/error.log crit;
keepalive_timeout 10;
client_header_timeout 10;
client_body_timeout 10;
reset_timedout_connection on;
send_timeout 10;
limit_conn_zone $binary_remote_addr zone=addr:5m;
limit_conn addr 100;
include /etc/nginx/mime.types;
default_type text/html;
charset UTF-8;
gzip on;
gzip_disable "msie6";
gzip_proxied any;
gzip_min_length 1000;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
open_file_cache max=100000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
설정 을 편집 한 후 nginx 를 다시 시작 하 는 것 을 확인 하 십시오
sudo service nginx restart
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.