nginx 구성에 대한 자세한 설명
#전역 구성
#상위 구성
사용자 www-data#Run 사용자 기본 구성
pid /var/run/nginx.pid;#포트 번호 기본 구성
worker_processes 8;#nginx가 외부 세계에 웹 서비스를 제공할 때 작업자 프로세스 수를 정의합니다
#최적의 값은 CPU 코어 수, 데이터를 저장하는 하드 디스크 수 및 로드 모드
#보통 CPU 수와 동일하게 설정("auto"로 설정하면 자동으로 감지)
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 1 0000000; #8개의 프로세스를 8개의 CPU에 할당합니다. 물론 더 쓰거나 여러 CPU에 프로세스를 할당할 수 있습니다
worker_rlimit_nofile 200000;#작업자 프로세스의 최대 열린 파일 수 제한을 변경
#설정하지 않은 경우 이 값 는 운영 체제의 한계입니다
#설정한 후에는 운영 체제와 Nginx가 "ulimit -a"보다 더 많은 파일을 처리할 수 있으므로 nginx에서 "열린 파일이 너무 많음"이 발생하지 않도록 이 값을 높게 설정하십시오. 문제
# 10240을 입력하면 전체 동시성이 30,000~40,000에 도달하면 프로세스 수가 10,240을 초과할 수 있으며 502 오류가 반환됩니다
#이 명령은 최대 파일 설명자 수를 나타냅니다. 이론적인 값은 최대 열린 파일 수(ulimit -n)를 nginx 프로세스 수로 나눈 값이어야 하지만 nginx 할당 요청이 균일하지 않으므로 해당 값과 일관되게 유지하는 것이 가장 좋습니다. of ulimit -n
events {
worker_connections 102400; # 하나의 작업자 프로세스가 동시에 열 수 있는 연결을 설정합니다. 최대 연결 수
#위에 언급된 Worker_rlimit_nofile이 설정되면 설정할 수 있습니다. 이 값은 매우 높습니다.
#중요: 최대 클라이언트 수는 시스템에서 사용 가능한 소켓 연결 수(~64K)에 의해 제한되므로 비현실적으로 높은 수를 설정해도 이점이 없습니다
#이론적으로 최대 클라이언트 수는 각 nginx 서버의 연결은 작업자_프로세스*worker_connections입니다.
multi_accept on; # nginx에게 새 연결 알림을 받은 후 가능한 한 많은 연결을 허용하도록 지시
epoll 사용; #클라이언트 스레드 재사용을 위한 폴링 방법 설정
}
http {
server_tokens off; # nginx가 더 빨리 실행되지는 않지만 오류 페이지에서 nginx 버전 번호를 끌 수 있습니다. 이는
sendfile을 설정할 수 있습니다. ( )가 작동합니다
tcp_nopush on; # nginx에게 모든 헤더 파일을 차례로 보내는 대신 하나의 패킷으로 보내도록 지시합니다
tcp_nodelay on; # nginx에게 데이터를 캐시하지 말고 조각을 보내라고 지시합니다. by Piece-- 데이터를 제때 전송해야 하는 경우 이 속성을 애플리케이션에 설정해야 작은 데이터 정보를 전송할 때 반환 값을 즉시 얻을 수 없습니다.
access_log off #Set 여부 nginx; 액세스 로그를 저장합니다. 이 옵션을 끄면 읽기 디스크 IO 작업이 더 빨라질 수 있습니다(YOLO라고도 함)
error_log /var/log/nginx/error.log crit; # nginx에게 심각한 오류만 기록하도록 지시
keepalive_timeout 10; 연결 유지 링크 시간 초과를 할당합니다. 서버는 이 시간 초과 후에 링크를 닫습니다. ngnix가 더 오랫동안 작업을 계속할 수 있도록 더 낮게 설정했습니다.
client_header_timeout 10 #요청 헤더에 대한 시간 제한을 설정합니다. 이 값을 더 낮게 설정할 수도 있습니다.
client_body_timeout 10; #요청 본문에 대한 시간 초과를 설정합니다. 이 값을 더 낮게 설정할 수도 있습니다.
reset_timedout_connection on; # nginx에게 응답하지 않는 클라이언트 연결을 닫도록 지시합니다. 이렇게 하면 해당 클라이언트가 차지하는 메모리 공간이 확보됩니다.
send_timeout 10;#클라이언트의 응답 시간 초과를 지정합니다. 이 설정은 전체 포워더에 적용되지 않고 클라이언트 읽기 작업 사이에 적용됩니다. 클라이언트가 이 기간 동안 데이터를 읽지 않으면 nginx는 연결을 닫습니다.
limit_conn_zone $binary_remote_addr z>#다양한 키를 저장하는 데 사용되는 공유 메모리의 매개변수 설정(예: 현재 연결 수) .
#5m은 5MB입니다. 이 값은 (32K*5) 32바이트 상태 또는 (16K*5) 64바이트 상태를 저장할 수 있을 만큼 크게 설정되어야 합니다.
limit_conn #특정 키에 대한 최대 연결 수를 설정합니다. 여기서 핵심은 addr이고 우리가 설정한 값은 100입니다. 이는 각 IP 주소가 동시에 최대 100개의 연결을 열 수 있음을 의미합니다.
include /etc/nginx/mime.types; 현재 파일의 또 다른 파일 내용에 대한 지시문입니다. 여기서는 나중에 사용할 일련의 MIME 유형을 로드하는 데 사용합니다.
default_type text/html; # 파일에서 사용되는 기본 MIME 유형을 설정합니다.
charset UTF-8 # 헤더에 기본값을 설정합니다. file 문자 집합
gzip on; #은 nginx에게 gzip 압축으로 데이터를 보내도록 지시합니다. 이렇게 하면 전송되는 데이터의 양이 줄어듭니다.
gzip_disable "msie6"; # 지정된 클라이언트에 대해 gzip 기능을 비활성화합니다. 우리 솔루션을 널리 호환되도록 하기 위해 이를 IE6 이하로 설정했습니다.
# gzip_static on; #압축하기 전에 사전 gzip 처리된 리소스가 있는지 확인하도록 nginx에 지시
#이를 위해서는 파일을 사전 압축해야 합니다. 가장 높은 압축 비율을 사용할 수 있으므로 nginx는 더 이상 이러한 파일을 압축할 필요가 없습니다.
gzip_proxied any; #요청 및 응답을 기반으로 응답 스트림 압축을 허용하거나 비활성화합니다. 이를 any로 설정했는데, 이는 모든 요청이 압축된다는 의미입니다.
gzip_min_length 1000; #데이터 압축을 활성화하는 최소 바이트 수를 설정합니다.요청이 1000바이트 미만인 경우
#압축하지 않는 것이 좋습니다. 이러한 작은 데이터를 압축하면 이 요청을 처리하는 모든 프로세스가 느려지므로
gzip_comp_level 4; #데이터의 압축 수준을 설정합니다. 이 수준은 1~9 사이의 값일 수 있으며, 9는 가장 느리지만 압축 비율은 가장 높습니다.
#더 절충적인 설정인 4로 설정했습니다.
gzip_buffers 16 8k;
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; #캐시를 열 때 최대 캐시 수와 캐시 시간도 지정합니다.
#20초 이상 비활성화된 후 삭제할 수 있도록 상대적으로 높은 최대 시간을 설정할 수 있습니다.
open_file_cache_valid 30s # open_file_cache에서 올바른 정보를 감지하는 간격을 지정합니다.
open_file_cache_min_uses 2; open_file_cache
open_file_cache_errors on
include /etc/nginx/conf.d/*.conf
include /etc/nginx/sites에서 비활성 시간 동안의 최소 파일 수를 정의합니다. 활성화됨/*;
}
위 내용은 내용적인 측면을 포함하여 nginx 고성능 구성에 대한 자세한 설명을 소개하고 있어 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.