Nginx 학습 노트 - day 01
11644 단어 nginx
구조 별로 분류 하 다
: HTTP , EVENT , MAIL
: HTTP Access , HTTP FastCGI , HTTP Proxy , Http Rewrite
: HTTP Upstream Request Hash , Notice , HTTP Access Key
기능 별 분류
Handlers( ): , headers ,
Filters( ): , nginx
Proxies( ): nginx http upstream , (FastCGI) , 。
작업 원리
- HTTP , nginx location
- location , Nginx
- location handler filter
- handler , , filter
프로 세 스 모델
- ,
- worker , , worker , worker
- worker , worker
- nginx , , master worker
마스터 프로 세 스
- worker
-
- worker
- worker
- worker , worker
- master ,
- ,
- worker , , ,
worker 프로 세 스
- , worker
- worker ,
Nginx+FastCGI
FastCGI 가 뭐야?
- , HTTP server
HTTP server FastCGI, Apache, Nginx, lighttpd
- FastCGI C/S , HTTP
HTTP , FastCGI ,
HTTP , Client
운행 원리
- CGI , FastCGI wrapper,
- wrapper .sock
- nginx CGI socket , wrapper , fork ,
,
- FastCGI , sock nginx
-
spawn - fcgi 와 pp - fpm
- php FastCGI
- HTTPServer ,
- spawn-fcgi
- spawn-fcgi http lighttpd , , lighttpd
- , , FastCGI
- , crontab
- php-fpm
- php , php ,
- , FastCGI(:-D)
- cpu spawn-fcgi ,
Nginx+php-fpm
- php5.3.3 , php-fpm,
- , -enable-fpm php-fpm
- web , php , "REQIEST_URI"
프로필
- , [http] -> [server] -> [location]
- ,
""" """
server {
listen 80;
server_name exp.com;
root /xx;
"""
index location ,
server ,
"""
index index.html index.htm index.php;
location / {
"""
1. try_files if
2.
1. http://www.exp.com/a , $uri /a
2.
3. a 。 $uri/, /, a
4. , http://www.exp.com/index.php
"""
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
try_files $uri = 400;
"""
fastcgi.conf , fastcgi_params
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
"""
include fastcgi.conf;
"""
fastcgi_pass unix:/xx/xx/xx/xx.sock
"""
fastcgi_pass 127.0.0.1:9000; # fastcgi_pass unix:/xx/xx/xx/xx.sock
}
}
nginx 의 다 중 프로 세 스 IO 모델
장점.
- ,
- ,
- ,
nginx 의 비동기 비 차단
- --> --> --> -->
- , io , cpu , io,
- cpu
nginx 이벤트 모델
이벤트 모델
묘사 하 다.
select
표준 방법 은 컴 파일 할 때 기본 으로 선택 한 방법 입 니 다. - with - select 를 사용 할 수 있 습 니 다.module 와 -- without - selectmodule 에서 사용 하거나 사용 하지 않 습 니 다.
poll
표준 방법, 설정 매개 변수 -- with - poll 사용 가능module 와 -- without - pollmodule 에서 이 모듈 을 사용 하거나 사용 하지 않 습 니 다.
kqueue
효율 적 인 방법 은 FreeBSD 4.1 +, OpenBSD 2.9 +, MacOS X 와 더 블 프로 세 서 를 사용 하 는 MacOS X 시스템 에서 사용 하면 커 널 붕 괴 를 초래 할 수 있 습 니 다.
epoll
Liux 에 게 있어 서 그것 만 이 효율 적 인 방법 이다.
epoll 의 장점
worker cpu , worker , cpu ,
nginx , cpu ,
cache , nginx
nginx 4 , 4 int , , cpu
nginx 의 최적화
nginx 컴 파일 후 파일 크기 줄 이기
"""
nginx debug ,
, debug
"""
# auto/cc/gcc , , debug
# debug
CFLAGS="$CFLAGS -g"
특정 CPU 에 지정 한 CPU 형식 컴 파일
"""
Nginx , GCC “-O”, GCC ,
1. --with-cc-opt='-O3'
2. --with-cpu-opt=CPU # CPU , :
pentium, pentiumpro, pentium3, # pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64
"""
# cpu ,
cat /proc/cpuinfo | grep "model name"
TCMalloc 를 이용 하여 nginx 최적화
TCMalloc , ,
nginx 의 커 널 매개 변수 최적화
# /etc/sysctl.conf
net.ipv4.tcp_max_tw_buckets = 6000 # timewait
net.ipv4.ip_local_port_range = 1024 65000 #
net.ipv4.tcp_tw_recycle = 1 # timewait
net.ipv4.tcp_tw_reuse = 1 # , TIME-WAIT sockets TCP
net.ipv4.tcp_syncookies = 1 # SYN , cookies
net.core.somaxconn = 262144
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 1 # SYN+ACK
net.ipv4.tcp_syn_retries = 1 # SYN
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30 # keepalive , TCP keepalive ,
#
/sbin/sysctl -p
nginx 에 대한 php - fpm 최적화
4G , FastCGI 200,
php-fpm.conf
“1024” 1024 4096
,
/etc/security/limits.conf
hard nofile 65535
soft nofile 65535
max_requests children , 500
500
–
nginx. conf 최적화
# 8 cpu
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000
# epoll
use epoll
#
work_connects 65535
# ,
client_header_buffer_size 16k
large_client_header_buffers 4 32k
# gzip
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-JavaScript text/css
application/xml;
gzip_vary on;
# :
location ~* ^.+\.(swf|gif|png|jpg|js|css)$ {
root /usr/local/ku6/ktv/show.ku6.com/;
expires 1m;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.