> 백엔드 개발 > PHP 튜토리얼 > Nginx 구성 파일에 대한 자세한 설명

Nginx 구성 파일에 대한 자세한 설명

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-08-08 09:31:29
원래의
803명이 탐색했습니다.

Nginx 구성 파일 세부정보


사용자 nginx ;

#사용자


worker_processes 8 ;

# 하드웨어에 따라 조정된 작업 프로세스는 cpu코어 수 이상입니다.


error_log 로그/nginx_error.log crit;

#오류 로그


pid 로그/nginx.pid;

#pid배치


worker_rlimit_nofile 204800;

#프로세스가 열 수 있는 최대 설명자를 지정합니다

이 명령은 nginx 프로세스에서 열리는 최대 파일 설명자 수를 나타냅니다. 이론적 값은 최대 열린 파일 수여야 합니다

개수( ulimit -n)을 nginx의 프로세스 수로 나눈 값입니다. 하지만 nginx요청 배포가 균일하지 않으므로 ulimit를 사용하는 것이 가장 좋습니다. -n 의 값은 일관되게 유지됩니다.

현재 linux 2.6커널 아래 열린 파일 수는 65535, worker_rlimit_nofile입니다. 65535을 적절히 채워야 합니다.

이것은 nginx스케줄링 시 프로세스에 대한 요청 분포가 균형이 맞지 않으므로 10240, 총 동시성이 3-4에 도달할 때마다 를 초과할 수 있는 프로세스가 있습니다. 10240, 502 오류가 반환됩니다.


이벤트


{

epoll을 사용하세요.

#epoll 이용I/O 모델

보충 지침:

apache와 유사하며, nginx는 다른 운영 체제를 대상으로 합니다. 이벤트 모델이 다릅니다

A ) 표준 이벤트 모델

선택, poll은 업데이트가 없는 경우 표준 이벤트 모델에 속합니다. 현재 시스템에서는 효과적인 방법은 nginx에서 선택 또는 설문조사

B) 효율적인 이벤트 모델

Kqueue: FreeBSD에서 사용됩니다. 4.1+, OpenBSD 2.9+, NetBSD 2.0 MacOS X.이중 프로세서 사용맥OS Xkqueue의 시스템 사용으로 인해 커널 충돌이 발생할 수 있습니다.

Epoll:Linux에 사용 커널2.6 버전 및 이후 시스템.

/dev/poll: Solaris에서 사용됨 7 11/99+, HP/UX 11.22+(이벤트 포트), IRIX 6.5.15+ Tru64 UNIX 5.1A+.

이벤트포트: Solaris에서 사용됨 10. 커널 충돌을 방지하기 위해서는 보안패치 설치가 필요합니다



worker_connections 204800;

#작업 프로세스의 최대 연결 수는 하드웨어에 따라 조정되며, 이전 작업 프로세스는 가능한 한 커야 합니다. 하지만 cpu100% 다만

허용되는 최대 연결 수 프로세스당, 이론적으로는 머신당 nginx서버의 최대 연결 수는 worker_processes*worker_connections


keepalive_timeout 60;


연결 유지시간 초과.


client_header_buffer_size 4k;


클라이언트 요청 헤더의 버퍼 크기는 일반적으로 시스템 페이징 크기에 따라 설정될 수 있습니다. , 요청 헤더의 크기는 1k를 초과하지 않지만 일반 시스템 페이징은 1k 이므로 페이징 크기로 설정됩니다.

페이지 크기는

명령으로 사용할 수 있습니다. getconf PAGESIZE 을 얻었습니다.

[root@web001 ~]# getconf PAGESIZE

4096

그러나

client_header_buffer_size도 있습니다. 4k을 초과하지만 client_header_buffer_size 이 값은 "시스템 페이징 크기"의 정수배로 설정되어야 합니다.


open_file_cache max=65535 inactive=60s;


기본적으로 활성화되지 않은 파일 열기용 캐시를 지정합니다.

max캐시 수를 지정합니다. 열린 파일 수와 일치하는 것이 좋습니다. 비활성은 캐시가 삭제되기 전에 파일이 요청되지 않은 기간을 나타냅니다.


open_file_cache_valid 80초;


캐시된 유효한 정보를 얼마나 자주 확인하는지를 나타냅니다.


open_file_cache_min_uses 1;


open_file_cache 명령 inactive 매개변수 내에서 파일이 사용되는 최소 횟수입니다. 이 숫자를 초과하면 파일 설명자가 항상 사용됩니다. 위의 예와 같이 파일이 비활성 시간 내에 사용되지 않으면 제거됩니다. .



}


# 설정 http 서버, 역방향 프록시 기능을 사용하여 로드 밸런싱 지원 제공

http

{

mime.types 포함;

#설정mime유형,유형별 mime.type파일 정의

default_type application/octet-stream;

log_format main '$host $status [$time_local] $remote_addr [$time_local] $request_uri '

'"$http_referer" "$http_user_agent" "$http_x_forwarded_for " '

'$bytes_sent $request_time $ sent_http_x_cache_hit';

log_format log404 '$status [$time_local] $remote_addr $host$request_uri $sent_http_location';

$remote_addr$http_x_forwarded_for 은 클라이언트의 ip 주소를 기록하는 데 사용됩니다. 🎜>

$remote_user : 클라이언트 사용자 이름을 기록하는 데 사용됩니다. $time_local: 액세스 시간 및 시간대를 기록하는 데 사용됩니다.

$request

: urlhttp

프로토콜

$상태: 요청 상태를 기록하는 데 사용됩니다. 200,

$body_bytes_s ent : 기록 보내기 클라이언트 파일 본문 내용 크기 지정 🎜>: 해당 페이지에서 액세스한 링크를 기록하는 데 사용됩니다. 🎜> $http_user_agent

: 고객 브라우저의 관련 정보를 기록합니다.

보통

역방향 프록시 뒤에 서버가 배치되어 있으므로 고객의 IP

주소는 $remote_add

IP주소

가져오기를 통해 획득 은 역방향 프록시 서버의 iP 주소입니다. 역방향 프록시 서버는 전달되는

http

헤더 정보에 을 추가할 수 있습니다. request.>x_forwarded_for 정보는 원본 클라이언트의 IP 주소와 원본 클라이언트가 요청한 서버 주소를 기록하는 데 사용됩니다. ;access_log /dev/null; #사용됨 log_format 명령으로 로그 형식을 설정한 후 access_log로 지정해야 합니다. 명령어 로그 파일 저장 경로 ;

# access_log /usr/local/nginx /logs/access_log main;

server_names_hash_bucket_size 128 ;

#해시 테이블은 server_names_hash_max_size server_names_hash_bucket_size 지시어에 의해 생성됩니다. 매개변수해시 버킷 크기는 항상 해시 테이블의 크기와 동일하며 프로세서 캐시 크기의 배수입니다. 메모리의 접근 횟수를 줄인 후 프로세서에서 hash 테이블 키 값 검색 속도를 높일 수 있습니다. if해시 버킷 크기는 프로세서 캐시의 크기와 같습니다. 그러면 키를 검색할 때 최악의 경우 메모리 검색 횟수는 2개입니다. . 첫 번째는 저장 장치의 주소를 확인하는 것이고 두 번째는 저장 장치에서 키를 찾는 것입니다. 값. 따라서 Nginx가 주어지면 해시를 늘려야 합니다. max size 또는 hash bucket size 프롬프트가 나타나면 먼저 이전 매개변수의 크기를 늘리는 것입니다 .🎜>

client_header_buffer_size 4k;


클라이언트 요청 헤더의 버퍼 크기입니다. 이는 시스템의 페이징 크기에 따라 설정될 수 있습니다. 일반적으로 요청의 헤더 크기는

을 초과하지 않습니다. 1k 이지만 일반적인 시스템 페이징은

1k보다 크기 때문에 페이징 크기는 여기에 설정되어 있습니다. 페이징 크기는

getconf 명령을 사용하여 확인할 수 있습니다. PAGESIZE을 얻었습니다.

large_client_header_buffers 8 128k;


클라이언트 요청 헤더 버퍼 크기

nginx기본적으로

client_header_buffer_size

버퍼
헤더 값을 읽으려면 header가 너무 커서

large_client_header_buffers

읽기너무 작게 설정된 경우HTTP 헤더/쿠키너무 큽니다 보고합니다 400 오류nginx 400 잘못된 요청버퍼를 초과하는 경우, HTTP를 보고합니다. 414
오류(URI가 너무 김)nginx 가장 긴 것을 허용 HTTP
헤더 크기는 다음 중 하나보다 커야 합니다.
버퍼
가 크며, 그렇지 않으면 400HTTP 오류(나쁨 요청)

.

open_file_cache 최대 102400

필드 사용

: http, server, location 이 지시문은 다음을 지정합니다. 캐시 이 활성화된 경우

이 활성화된 경우 은 다음 정보를 기록합니다. 파일에서: ·파일 설명자 열기,크기 정보 및 수정 시간. ·기존 디렉터리 정보 ·파일 검색 중 오류 메시지 --해당 파일이 없습니다,올바르게 읽을 수 없습니다, 참조open_file_cache_errors명령 옵션:·max - 최대 캐시 수 지정 ,캐시가 오버플로되는 경우 , 가장 오래 사용한 파일
(LRU)
이 제거됩니다 : open_file_cache 최대=1000 비활성=20초; open_file_cache_valid 30초; open_file_cache_errors on;

open_file_cache_errors
구문 :open_file_cache_errors 켜짐 | 꺼짐 기본값:open_file_cache_errors off 필드 사용: http, server, location this 명령 파일 검색이 기록되는지 여부를 지정합니다. cacheerror.

open_file_cache_min_uses

구문: open_file_cache_min_uses 번호 기본값 :open_file_cache_min_uses 1 필드 사용 : http, 서버, 위치 이 명령 open_file_cache 명령 의 유효하지 않은 매개변수에서 특정 시간 범위 내에서 사용할 수 있는 최소 파일 수를 지정합니다. > ,등 더 큰 값을 사용하는 경우 파일 설명자는 캐시은 항상 .
open_file_cache_valid에 열려 있습니다.

구문:open_file_cache_valid time 기본값:open_file_cache_valid 60 필드 사용 : http, server, location 이 지시어는 유효한 정보를 확인할 시기를 지정합니다. open_file_cache.


client_max_body_size 300m;

nginx 를 통해 설정 업로드 파일 크기


파일 보내기;

#sendfile명령 사양 nginx 여부 sendfile 함수 호출(zero copy 방식) 파일을 출력하려면, 일반 애플리케이션의 경우 on으로 설정해야 합니다. IO 다운로드 등 로드가 많은 애플리케이션에 디스크를 사용하는 경우 끄기 디스크와 네트워크 균형 IO처리 속도 및 시스템 감소 가동 시간.

tcp_nopush on;

이 옵션은

소켓 > 사용을 허용하거나 비활성화합니다. TCP_CORK 옵션, 이 옵션은 sendfile 을 사용할 때만 사용됩니다.


proxy_connect_timeout 90; >

#백엔드 서버 연결 시간 초과 _핸드셰이크를 시작하고 응답 시간 초과를 기다립니다.

proxy_read_timeout 180;

#

접속 성공 후 _백엔드 서버 응답 시간을 기다리는 중_사실 들어왔습니다. 처리를 기다리는 백엔드 큐(백엔드 서버가 요청을 처리하는 데 걸리는 시간이라고도 할 수 있음)

proxy_send_timeout 180;

#

백엔드 서버 데이터 반환 시간_즉, 백엔드 서버는 해당 시간 내에 모든 데이터 전송을 완료해야 합니다. 지정된 시간

proxy_buffer_size 256k;

#프록시 서버에서 읽은 응답의 첫 번째 부분에 대한 버퍼 크기를 설정합니다. , 일반적으로 응답의 이 부분에는 작은 응답 헤더가 포함됩니다. 기본적으로 이 값의 크기는 proxy_buffers , 그러나 더 작게 설정할 수 있습니다

proxy_buffers 4 256k;

#이 답글을 읽도록 설정되어 있습니다(The 프록시 서버의 버퍼 수 및 크기), 기본값은 페이징 크기이기도 하며 4k 또는 8k

proxy_busy_buffers_size 256k;


proxy_temp_file_write_size 256k;

# 작성 시 데이터 크기 설정 proxy_temp_path 파일 전달 시 작업자 프로세스가 너무 오랫동안 차단되는 것을 방지

proxy_temp_path /data0/proxy_temp_dir;

#proxy_temp_pathproxy_cache_path지정된 경로는 동일한 파티션에 있어야 합니다proxy_cache_path /data0/proxy_cache_dirlevel=1:2key_zone=cache_one:200m 비활성 =1일 max_size=30g;#
메모리 캐시 공간 크기를 200MB, 1 다음 기간 동안 접속하지 않은 콘텐츠 일이 자동으로 지워지는 경우 하드 디스크 캐시 공간 크기는 30GB입니다.

keepalive_timeout 120;

연결 유지시간 초과입니다.

tcp_nodelay on;

client_body_buffer_size 512k;


과 같이 더 큰 값으로 설정하는 경우 >256k 그러면 firefox 또는 IE 브라우저로 256k 사진은 모두 정상입니다. 이 지시문을 주석 처리하면 기본 client_body_buffer_size 설정이 사용됩니다. 이는 운영 체제 페이지 크기 의 두 배입니다. 8k 또는 16k, 문제가 발생합니다. firefox4.0 또는 IE8.0, 더 큰 것을 제출하세요, 200k 좌우사진 모두반환 500 내부 서버 오류오류

proxy_intercept_errors on;

을 사용한다는 의미입니다. nginx

차단HTTP응답 코드는 400입니다. 이상 응답.


업스트림

img_relay {

서버 127.0.0.1:8027;

서버 127.0.0.1:8028;

서버 127.0.0.1:8029;

hash $request_uri;

}

nginx

업스트림현재 4배포 방식 지원

1

, 폴링(기본값)

백엔드 서버가 down이 빠져 자동으로 처치될 수 있습니다.

2, weight
은 폴링 확률을 지정하고, weight는 백엔드에 사용되는 액세스 비율에 비례합니다. 서버 성능이 고르지 않은 상황. 예:
업스트림 Bakend {
server 192.168.0.14 Weight=10;
서버 192.168.0.15 무게=10;
}

2, ip_hash
요청별 액세스 hash ip 결과가 배포되므로 각 방문자는 백엔드 서버에 대한 고정 액세스 권한을 갖게 됩니다. 세션 문제. 예:
업스트림 Bakend {
ip_hash;
서버 192.168.0.14:88 ;
서버 192.168.0.15:80;
}

3, 공정(제3자) 백엔드 서버의 응답 시간에 따라 요청을 할당하며, 응답 시간이 짧은 요청부터 먼저 할당됩니다. 업스트림 백엔드 {
서버 server1;
서버 server2;
fair;
}

4 , url_hash(타사)

url해시결과는 각 url이 동일한 백엔드 서버로 전달되도록 요청을 분산하는 데 사용됩니다. 백엔드 서버를 캐시할 때 더 효과적입니다.

예:

업스트림hash 문을 🎜>에 추가하세요. 서버에는 weight 및 기타 매개변수 hash_method가 사용됩니다. >해시알고리즘

업스트림 백엔드 {서버 오징어1:3128;

서버 오징어2:3128;
hash $request_uri;
hash_method crc32 ;
}

팁:

업스트림 Bakern{#로드 밸런싱 장치 정의

IP 및 장치 상태ip_hash;서버 127.0.0.1: 9090 다운;
서버 127.0.0.1:8080 가중치=2;
서버 127.0.0.1:6060;
서버 127.0. 0.1:7070 백업;
}
사용해야 하는
서버
추가됨
proxy_pass http://bakend/;
각 기기의 상태는

으로 설정됩니다:

1.down은 단일 전면을 의미합니다. 서버
당분간 로드에 참여하지 않습니다
2.weight기본값은 1.무게가 클수록
, 짐의 무게도 커집니다.
3.max_fails: 허용되는 요청 실패 횟수는 기본적으로 1입니다.
최대 횟수를 초과하면
proxy_next_upstream모듈에서 정의한 오류를 반환합니다. 4.fail_timeout:max_fails실패 후 일시 중지하는 시간입니다.
5.백업
: 기타 모든 비백업
머신
다운또는 바쁜 시간에는 백업을 요청하세요. 따라서 이 기계의 압력은 가장 낮습니다.

nginx다음에서 여러 로드 그룹 설정을 지원합니다. 동시에 미사용

서버에 사용되는 잔액입니다.

client_body_in_file_only켜기 로 설정되었습니다. 말할 수 있음고객 게시물의 데이터는 debug
client_body_temp_path
설정을 위한 파일에 기록됩니다. 녹화 파일 디렉토리는 3레이어 디렉토리

위치URL과 일치합니다. 🎜>.새 프록시를 리디렉션하거나 생성할 수 있습니다. 로드 밸런싱


서버

#가상 머신 구성

{

들어보세요 80;

#구성 수신 포트

server_name 이미지.***.com;

#액세스 도메인 이름 구성

위치 ~* .(mp3|exe)$ {

#"로 바꾸기 🎜 >mp3 또는 exe” 로드 밸런싱으로 끝나는 주소

proxy_pass http://img_relay$request_uri;

#프록시 서버의 포트나 소켓을 설정하고 URL

proxy_set_header 호스트 $host;

proxy_set_header >proxy_set_header 위 세 줄의 목적은 프록시 서버에서 받은 사용자 정보를 실제 서버로 전달하는 것입니다

}

위치/얼굴 {

if ($http_user_agent ~* "xnp") {

다시 쓰기 ^(.*)$ http://211.151.188.190:8080/face.jpg 리디렉션;

}

proxy_pass http://img_relay$request_uri;

proxy_set_header 호스트 $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

error_page 404 502 = @fetch;

}

location @fetch {

access_log /data/logs/face.log log404;

#접속 로그 설정 이 서버의

다시 작성 ^(.* )$ http: //211.151.188.190:8080/face.jpg 리디렉션;

}

위치/이미지 {

if ($http_user_agent ~* "xnp") {


다시 쓰기 ^(.*)$ http://211.151.188.190:8080/face.jpg 리디렉션;

}

proxy_pass http://img_relay$request_uri;

proxy_set_header 호스트 $host;

Proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

error_page 404 502 = @fetch;

}

location @fetch {

access_log /data/logs/image.log log404 ;

다시 쓰기 ^(.*)$ http://211.151.188.190:8080/face.jpg 리디렉션;

}

}

서버

{

들어보세요 80;

서버_이름 *.***.com *.***. CN;

위치 ~* .(mp3|exe)$ {

proxy_pass http://img_relay$request_uri;

proxy_set_header 호스트 $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

위치 / {

if ($http_user_agent ~* "xnp" ) {

다시 쓰기 ^(.*)$ http://i1 .***img.com/help/noimg.gif 리디렉션;

}

proxy_pass http://img_relay$request_uri;

proxy_set_header 호스트 $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

#error_page 404 http://i1.***img.com/help/noimg.gif;

error_page 404 502 = @fetch;

}

location @fetch {

access_log /data/logs/baijiaqi. log log404;

다시 쓰기 ^(.*)$ http:// i1.***img.com/help/noimg.gif 리디렉션;

}

#접속_로그오프;

}


서버

{

들어보세요80;

서버_이름 *.***img.com;


위치 ~* .(mp3|exe)$ {

proxy_pass http://img_relay$request_uri;

proxy_set_header 호스트 $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}


위치 / {

if ($http_user_agent ~* "xnp ") {

다시 작성 ^(.* )$ http://i1.***img.com/help/noimg.gif;

}

proxy_pass http://img_relay$request_uri;

proxy_set_header 호스트 $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

#error_page 404 http://i1.***img.com/help/noimg.gif;

error_page 404 = @fetch;

}

#접속_로그오프;

location @fetch {

access_log /data/logs/baijiaqi.log log404;

다시 쓰기 ^(.*)$ http://i1 .***img.com/help/noimg.gif 리디렉션;

}

}

서버

{

8080 듣기;

server_name ngx -ha.***img.com;

위치 / {

stub_status on;

접속_로그오프;

}

}

서버{

듣기 80;

server_name imgsrc1.*** .net;

루트 html;

}

서버{

듣기 80;

server_name ***.com w. ***.com;

# access_log /usr/local/nginx /logs/access_log main;

위치 / {

다시 쓰기 ^(.*)$ http://www.***.com/ ;

}

}

서버{

들어보세요 80;

서버_이름 *******.com w.********.com;

# access_log /usr/local/nginx/logs/access_log main;

위치 / {

다시 쓰기 ^(.*)$ http://www.*******.com/;

}

}

서버{

듣기80;

서버_이름 ******.com;

# access_log /usr/local/nginx/logs/access_log main;

위치 / {

다시 쓰기 ^(.*)$ http://www.******.com/;

}

}

위치 /NginxStatus {
stub_status on;
access_log on;
auth_basic "NginxStatus";
auth_basic_user_file conf/htpasswd;
}

#设정查看 Nginx状态的地址


위치 ~ /.ht {
모두 거부;
}

#禁止访问.htxxx文件

}

注释:变weight

Ngx_http_core_module 模块支持内置变weight, 他们적 이름과apache적 ㅋㅋ说明客户请求

제목

中的行,例如$http_user_agent,$http_cookie等等。此外还有其它的一些变weight

$args

此变weight与请求行中的参数相等

$content_length

等于请求行적“

Content_Length”적합。 $content_type

等同与请求头부적”

콘텐츠 유형”적형 $document_root

等同于当前请求的

루트指令指정적值$document_uri

$uri一样

$host 요청 포함 헤더 "Host" 행 또는 에 지정된 값 요청도착 서버 이름(호스트 제외) OK)

과 동일 $limit_rate제한된 연결 속도 허용

$request_method과 동일합니다. 요청방법, 일반적으로 "GET" 또는 "POST"

$remote_addr고객 터미널ip

$remote_port클라이언트포트

$remote_user ngx_http_auth_basic_module으로 표시되는 사용자 이름과 동일합니다. 인증

$ request_filename현재 요청된 파일의 경로 이름으로, root 또는 별칭URI 요청통합

$request_body_file

$request_uri매개변수로 초기화 완료 URI

$query_string $args 마찬가지

$sheeme http 모드(http, https ) 모든 요구 사항이 평가됩니다. 예를 들어

다시 쓰기 ^(.+)$ $sheme://example.com$; 리디렉션;

$server_protocol과 동일합니다. 요청 프로토콜, " 사용 HTTP/ 또는 "HTTP/

$server_addr 요청 도착서버ip, 일반적으로 이 변수의 값을 얻는 목적은 시스템 호출을 수행하는 것입니다. 시스템 호출을 방지하려면 listen을 지정해야 합니다. 🎜> 지시문 >ip을 사용하고 을 사용합니다. 바인딩 매개변수.

$server_name 요청이 도착한 서버 이름

$server_port요청이 도착하는 서버의 포트 번호

$uri은 다음과 같습니다. 의 현재 요청URI는 내부적으로 리디렉션하거나 색인



nginx 중국어 위키피디아 http://wiki.nginx.org/NginxChs

http://www.queryer.cn/DOC/nginxCHS/index.html

위 내용은 관련 내용을 포함하여 Nginx 구성 파일에 대한 자세한 설명을 소개하고 있어 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿