52AV手機A片王|52AV.ONE
標題:
nginx優化(針對nginx.conf)
[打印本頁]
作者:
IT_man
時間:
2016-10-1 22:08
標題:
nginx優化(針對nginx.conf)
以CentOS 之 nginx的設定檔是在 /etc/nginx/nginx.conf
" Z2 c9 W/ r! \* h
一般來說 nginx 配置文件中對優化比較有作用的為以下幾項:
: I# |# {: ]% g7 i; l
worker_processes 8;
. A% W* A* f& y$ ]0 u
nginx 進程數,建議按照 cpu 數目來指定,一般為它的倍數。
8 H2 e6 Z; O ] O3 t }* H
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
- B0 @! g$ _% R9 R8 ]# M
為每個進程分配 cpu,上例中將 8 個進程分配到 8 個 cpu,當然可以寫多個,或者將一個進程分配到多個 cpu。
. b% W: Y9 g) _; a! S9 o- y% `) U
worker_rlimit_nofile 102400;
2 a+ [ G% t/ @; j8 `- v, X
這個指令是指當一個 nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與 nginx 進程數
: _& A3 u* u3 c3 n6 E5 _1 d3 N
相除,但是 nginx 分配請求並不是那麼均勻,所以最好與 ulimit -n 的值保持一致。
% N1 { j) Q0 w9 d6 F
use epoll;
1 m) }" f& u' z* n
使用 epoll 的 I/O 模型,這個不用說了吧。
. T- k: o& y7 T$ C9 P& a+ J& u) q
worker_connections 102400;
& ?/ @4 V D1 w" y1 b1 I
每個進程允許的最多連接數,理論上每台 nginx 服務器的最大連接數為 worker_processes*worker_connections。
, u7 V! i: w8 @5 ^+ K) G, ^
keepalive_timeout 60;
6 c4 W5 d8 [' S0 Q9 @: J
keepalive 超時時間。
, L5 a. f! Y$ M8 A$ G
client_header_buffer_size 4k;
7 s( R8 C0 R6 Z* C& U# `- W+ \5 ]
客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過 1k,不過由
9 O G6 G. n' s9 Y* V; s
於一般系統分頁都要大於 1k,所以這裡設置為分頁大小。分頁大小可以用命令 getconf PAGESIZE 取得。
, G/ e) {# ]5 U( B" {( C8 p
open_file_cache max=102400 inactive=20s;
8 y# p! S. ~4 A, Y3 |7 u. e7 c: R
這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時
. V3 Z# L* i) D8 T1 ?' ?7 X
間文件沒被請求後刪除緩存。
1 `- g D* T' M6 Q; E5 m3 A1 b
open_file_cache_valid 30s;
9 s. `3 y7 i7 m' s
這個是指多長時間檢查一次緩存的有效信息。
3 _8 D) B3 Q" q! b( a* i' m
open_file_cache_min_uses 1;
# W1 z' D9 w3 s/ a
open_file_cache 指令中的 inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打
$ a1 V. B& a0 H- e+ G, [, E
開的,如上例,如果有一個文件在 inactive 時間內一次沒被使用,它將被移除。
0 B# e; T5 ]- n3 a4 c' Z
/ \# o8 X" o! B* c
1 R' K z, N9 r7 O. [. m
關於內核參數的優化:
* i8 h5 R' o0 q: m/ y" ~
net.ipv4.tcp_max_tw_buckets = 6000
5 b1 I) Z% M z+ {' E4 ?
timewait 的數量,默認是 180000。
! ^* T& I z$ W+ V5 q2 Z, c
net.ipv4.ip_local_port_range = 1024 65000
4 m2 K8 }( \% [: @, y# r
允許系統打開的端口範圍。
" ?; }, k2 R0 J& c$ M1 ?) l' [
net.ipv4.tcp_tw_recycle = 1
. Y& ?( R8 Z3 y* O
啟用 timewait 快速回收。
; H+ h& }1 H# ~, F3 b
net.ipv4.tcp_tw_reuse = 1
; M' v/ n/ C9 O: v8 C3 }
開啟重用。允許將 TIME-WAIT sockets 重新用於新的 TCP 連接。
* J. D0 O5 J: j, ?' J* ~: F: `
net.ipv4.tcp_syncookies = 1
# W/ i4 O1 }4 G3 F
開啟 SYN Cookies,當出現 SYN 等待隊列溢出時,啟用 cookies 來處理。
* m z" A& f; ^% i
net.core.somaxconn = 262144
0 g+ ^) h4 `" k& j/ C
web 應用中 listen 函數的 backlog 默認會給我們內核參數的 net.core.somaxconn 限製到 128,而 nginx 定義的
* v, e( g. C. L' e) \8 M% X
NGX_LISTEN_BACKLOG 默認為 511,所以有必要調整這個值。
5 |) s4 C6 x) b$ a
net.core.netdev_max_backlog = 262144
4 e5 l- c3 h' {! ]4 t( u" _& U7 S
每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。
1 U: i/ ^. e' l+ z# z
net.ipv4.tcp_max_orphans = 262144
" u: `% y+ U% }3 B6 }
系統中最多有多少個 TCP 套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤兒連接將即刻被復位並打
! N) M! A1 H- ?0 I( u% T
印出警告信息。這個限制僅僅是為了防止簡單的 DoS 攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值
; a( T* c& j% H5 {3 ^6 X0 \
(如果增加了內存之後)。
8 m0 s! v! q$ \$ L. Y3 k6 X
net.ipv4.tcp_max_syn_backlog = 262144
/ F! G& S8 I. o* d3 i4 M
記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對於有 128M 內存的系統而言,缺省值是 1024,小內存的系
" J/ ]- k2 s: J
統則是 128。
6 b$ h, U1 P8 ?8 I! ^* C* c% t
net.ipv4.tcp_timestamps = 0
' ]7 H d& q# ^2 M* t
時間戳可以避免序列號的捲繞。一個 1Gbps 的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的
4 d- \, b0 E9 f
數據包。這裡需要將其關掉。
8 m2 b: t; g& K @2 ?2 v
net.ipv4.tcp_synack_retries = 1
4 M p( N) p2 i1 q0 W
為了打開對端的連接,內核需要發送一個 SYN 並附帶一個回應前面一個 SYN 的 ACK。也就是所謂三次握手中的第二次
, y7 a( {# S: A \( U( l+ T; J
握手。這個設置決定了內核放棄連接之前發送 SYN+ACK 包的數量。
4 {5 g* ?+ f' P5 X2 u- t" X' Q
net.ipv4.tcp_syn_retries = 1
2 u9 O& a1 J9 [3 d2 b$ i# [. a6 m$ @
在內核放棄建立連接之前發送 SYN 包的數量。
) }; h& m4 ]: B% w [8 r) T* |' Q
net.ipv4.tcp_fin_timeout = 1
8 q& Q E& n2 I- P6 F
如果套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間。對端可以出錯並永遠不關閉連接,甚
% A# k& o. |7 x9 s. K" V
至意外當機。缺省值是 60 秒。2.2 內核的通常值是 180 秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕
u1 [9 Y" n( f% \& m; G% p
載的 WEB 服務器,也有因為大量的死套接字而內存溢出的風險,FIN- WAIT-2 的危險性比 FIN-WAIT-1 要小,因為它最
2 x# p! C* H) ^8 S' W" {& Z1 }
多只能吃掉 1.5K 內存,但是它們的生存期長些。
; ], x4 G+ _7 H+ n% _3 {
net.ipv4.tcp_keepalive_time = 30
* a% N4 J* B" `8 w! p
當 keepalive 起用的時候,TCP 發送 keepalive 消息的頻度。缺省是 2 小時。
* P3 l- g% C3 V: J( P
1 [( T! E j( s# y0 _" S5 h i
) d% W( B% |, J
下面貼一個完整的內核優化設置:
7 E) r Z$ J/ L6 h) U
net.ipv4.ip_forward = 0
8 N$ q: s2 e- k9 t2 k/ _0 @ o3 ~
net.ipv4.conf.default.rp_filter = 1
# E2 M$ r$ ~: J$ f& L
net.ipv4.conf.default.accept_source_route = 0
2 K6 w3 F* M B. d- T6 q9 h! b
kernel.sysrq = 0
% S/ @4 y8 {" d4 T8 E( {
kernel.core_uses_pid = 1
+ r5 G5 B. U8 U: \+ t
net.ipv4.tcp_syncookies = 1
" o$ A9 @6 J' ?: ]6 g
kernel.msgmnb = 65536
2 ~& {7 A, v( F" e7 Q' v/ \
kernel.msgmax = 65536
# a' ^/ @/ T: a9 t; [; R
kernel.shmmax = 68719476736
# v; Z# V* U8 Q# r
kernel.shmall = 4294967296
6 w3 G7 v' E9 v
net.ipv4.tcp_max_tw_buckets = 6000
. p% l9 a& b) u7 J, X/ z+ H
net.ipv4.tcp_sack = 1
$ d8 T4 M; ^$ ?# r$ h+ a
net.ipv4.tcp_window_scaling = 1
! N% `. w1 P. W% {
net.ipv4.tcp_rmem = 4096 87380 4194304
& o0 X. i) @; b4 n: u/ D9 H. Y4 p7 \
net.ipv4.tcp_wmem = 4096 16384 4194304
* ~* o& M( }+ o m5 Y& N
net.core.wmem_default = 8388608
# ~+ W0 G+ T+ X9 I6 K2 b- A5 I
net.core.rmem_default = 8388608
A0 }' K6 P, E
net.core.rmem_max = 16777216
7 l$ [( T! @8 X! e! z
net.core.wmem_max = 16777216
# i2 S1 n: X& ]0 o% s9 Y
net.core.netdev_max_backlog = 262144
% Q% m1 q( X( C( x( {" y+ X' Q
net.core.somaxconn = 262144
1 U& l5 N: Q9 }) ]" x5 r C
net.ipv4.tcp_max_orphans = 3276800
* Q; F1 O) q7 |
net.ipv4.tcp_max_syn_backlog = 262144
. ]% P, q( V2 a3 G- _) E: K
net.ipv4.tcp_timestamps = 0
8 c* |+ H' T2 o/ e" v5 O
net.ipv4.tcp_synack_retries = 1
2 u9 L2 Y; w, a8 l7 p- u" F1 Y: G
net.ipv4.tcp_syn_retries = 1
; a+ d8 E8 L7 m6 {! ?
net.ipv4.tcp_tw_recycle = 1
9 K B& e/ E7 m% f) U( n# A! _
net.ipv4.tcp_tw_reuse = 1
7 @. W5 C: M" B/ }: e! n
net.ipv4.tcp_mem = 94500000 915000000 927000000
3 q& r3 K% [% o9 M; |4 r! G& [
net.ipv4.tcp_fin_timeout = 1
9 e+ e+ n3 ~( M* r
net.ipv4.tcp_keepalive_time = 30
5 w, A6 @' ^/ G3 j6 R
net.ipv4.ip_local_port_range = 1024 65000
6 ]$ D) \2 L& E- G. z% j! A
4 p8 m4 K! o/ H7 t8 _, w' g
: N1 d; d$ C- U9 J: d3 U
下面是一個簡單的 nginx 配置文件:nginx.conf
$ e0 J1 ~# [+ w! C# R
user www www;
; d3 b& `8 a& ?$ e
worker_processes 8;
1 |2 ~) S/ ~/ i4 t( c n6 x" D
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;
# D( o" ?; J& I% m$ Q& k+ ]
error_log /www/log/nginx_error.log crit;
[# ]* [. w' N' I
pid /usr/local/nginx/nginx.pid;
4 _) w6 u3 ?/ U2 J) `
worker_rlimit_nofile 204800;
$ R: u1 _3 t# w5 ^0 \: T
events
3 _. i) d1 d' i& |& Q* O1 E
{
8 X$ P9 ~4 D) ?; S
use epoll;
) o/ f2 Q; | J% @- b" S
worker_connections 204800;
5 }! G- G7 h9 Q
}
. B z5 y" t6 n% m8 O P
http
# _5 y2 U2 \8 A9 X0 g
{
: X P6 N" X8 R$ F6 e7 G
include mime.types;
- I8 D8 I8 a* z$ J8 i$ i' f U/ X' s
default_type application/octet-stream;
- p: f" x' ~& J5 S4 `( v
charset utf-8;
N; i* ]+ K, G) a3 f
server_names_hash_bucket_size 128;
1 `& ?' G( Z* `& G, _: @
client_header_buffer_size 2k;
0 E& T# z# R2 }3 z7 N
large_client_header_buffers 4 4k;
6 ]. E5 X; v- ?! A/ ^3 w
client_max_body_size 8m;
, J2 y+ v- p! o5 {4 W5 [7 D3 M
sendfile on;
7 Z" [6 B* k2 C4 A6 [1 s; J* A
tcp_nopush on;
3 M+ T. f* b* n* c
keepalive_timeout 60;
7 `- X! V9 r& K7 }$ |- A% ^
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
5 }; N' }( J8 {5 c D' D
fastcgi_connect_timeout 300;
1 ]8 R* G' n4 l8 q
fastcgi_send_timeout 300;
" v$ d# x1 }. B# U
fastcgi_read_timeout 300;
r- a9 E6 B& _
fastcgi_buffer_size 16k;
: j# Q! |. ]6 t) K6 m/ u' q/ h6 c
fastcgi_buffers 16 16k;
; X1 v4 U4 t$ o& S1 {) s
fastcgi_busy_buffers_size 16k;
3 P" v) l# V+ m1 C
fastcgi_temp_file_write_size 16k;
1 U* C5 w8 W' F7 ]0 m
fastcgi_cache TEST;
9 i) I6 D: V* l& P
fastcgi_cache_valid 200 302 1h;
& P3 I4 S; v9 A/ |' K& G( x
fastcgi_cache_valid 301 1d;
$ M) O9 E- U! w: ~) N) @3 i
fastcgi_cache_valid any 1m;
/ A, v' F9 ?+ s; _ [+ Q. O+ I
fastcgi_cache_min_uses 1;
6 N0 _" W# ?( p" d. w5 h. p
fastcgi_cache_use_stale error timeout invalid_header http_500;
* h2 |2 m' s7 b; J
open_file_cache max=204800 inactive=20s;
8 D( X' b x0 S8 ?
open_file_cache_min_uses 1;
8 _- b8 x$ Q b) R4 o- b
open_file_cache_valid 30s;
, {4 J0 n( {" A- \" S6 W( W
tcp_nodelay on;
$ H& g. w5 M) Z2 ~( A
gzip on;
1 V+ G1 l& a0 Y, F
gzip_min_length 1k;
/ w: X& B3 ]7 r( J F! m6 D
gzip_buffers 4 16k;
) ^7 x2 y6 ~; L N5 l
gzip_http_version 1.0;
& p- m$ \+ o( e- ^% G8 G4 k
gzip_comp_level 2;
# w7 Z6 v( D0 Y8 f; @* p4 e h) |' Y8 B
gzip_types text/plain application/x-javascript text/css application/xml;
- ?, c% X% p2 p3 T
gzip_vary on;
' n9 u7 r! l: U8 N! |" R1 B
server
' x% x" V' Q9 h4 a
{
6 F% P4 q5 E' A6 ?, b
listen 8080;
: F* G5 `7 @; k- Q- W( n0 D- b
server_name backup.aiju.com;
5 c6 o2 t9 Q' f) l% S Q& }
index index.php index.htm;
% o+ }$ u; ~# _% I% { U
root /www/html/;
# p4 E' o/ `3 b' P6 m' n/ A" O4 l& b
location /status
3 w n, J$ [/ `5 E6 C# o
{
" q+ C; @0 S ^( ]7 f
stub_status on;
7 C0 F0 M! }' |6 a7 L6 @
}
$ o* O7 K9 B% Y. r W k
location ~ .*\.(php|php5)?$
* c0 ?! @# R( _% Q# _4 }) K- R3 i' ~
{
& N4 ~) n( b) i$ \% Q( E% o8 w
fastcgi_pass 127.0.0.1:9000;
/ r9 x* S2 E+ [+ a
fastcgi_index index.php;
y- ]1 s/ ~" A* C' s% O' }
include fcgi.conf;
. P+ [! s. H$ b& D% S
}
/ M2 f( E6 t0 [
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
2 D' s( J: b" T: Y8 q% f
{
H2 M R; \' G* O' Y' `
expires 30d;
( F1 u% p; i) q; f9 e# _# f
}
! Q( b) d. @8 |! O/ t* K3 f
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
' D8 ^2 _& @- ?8 J0 r# k& \- @
'$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';
# B% s* W" Q8 b- L
access_log /www/log/access.log access;
0 W! C: h0 s) z( @! Q; w0 V
}
* L" t+ ?" z/ Q
}
: ~) O3 F$ U7 d
5 M% q- p1 u0 Z0 p6 V
關於 FastCGI 的幾個指令:
9 o2 C F6 p! [$ o
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
6 ]: G4 ^9 c; f; V+ ^1 ]) ^
這個指令為 FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。
3 @9 i* ^& ?# {, `/ G1 u
fastcgi_connect_timeout 300;
: n7 r7 N& I9 N0 Y5 F. d
指定連接到後端 FastCGI 的超時時間。
# C: Q3 A. G3 P- [' A
fastcgi_send_timeout 300;
x7 ?3 A( C+ i3 s) E! Z0 N
向 FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向 FastCGI 傳送請求的超時時間。
* y- z% Q+ A9 ]2 M) J/ }
fastcgi_read_timeout 300;
- Q7 G+ i" n* r& g& D9 m( x3 j
接收 FastCGI 應答的超時時間,這個值是指已經完成兩次握手後接收 FastCGI 應答的超時時間。
! @: N% {& n) `$ u3 S" y. y! L+ }! C% p, m
fastcgi_buffer_size 16k;
( L5 a3 Y( B, h4 D, j+ H
指定讀取 FastCGI 應答第一部分需要用多大的緩衝區,這裡可以設置為 fastcgi_buffers 指令指定的緩衝區大小,上面的
! ^: G. @! B7 g* v# C6 U
指令指定它將使用 1 個 16k 的緩衝區去讀取應答的第一部分,即應答頭,其實這個應答頭一般情況下都很小(不會超過
& T1 h3 s" K5 O0 q
1k),但是你如果在 fastcgi_buffers 指令中指定了緩衝區的大小,那麼它也會分配一個 fastcgi_buffers 指定的緩衝區大
% P& u% a2 a5 x* C' Q- B) J
小去緩存。
5 _) n2 S9 C. [7 W
fastcgi_buffers 16 16k;
3 X' R; s. l6 V5 |0 \
指定本地需要用多少和多大的緩衝區來緩衝 FastCGI 的應答,如上所示,如果一個 php 腳本所產生的頁面大小為 256k,
6 w( x9 ~+ B" L) X7 s
則會為其分配 16 個 16k 的緩衝區來緩存,如果大於 256k ,增大於 256k 的部分會緩存到 fastcgi_temp 指定的路徑中,
, `3 H) Z" h) X* `& _ D
當然這對服務器負載來說是不明智的方案,因為內存中處理數據速度要快於硬盤,通常這個值的設置應該選擇一個你的
7 r! d r0 p9 d
站點中的 php 腳本所產生的頁面大小的中間值,比如你的站點大部分腳本所產生的頁面大小為 256k 就可以把這個值設
) g! l) }* Z: _
置為 16 16k,或者 4 64k 或者 64 4k,但很顯然,後兩種並不是好的設置方法,因為如果產生的頁面只有 32k,如果用 4
. f5 s' y* d _. {" g
64k 它會分配 1 個 64k 的緩衝區去緩存,而如果使用 64 4k 它會分配 8 個 4k 的緩衝區去緩存,而如果使用 16 16k 則它
1 D W0 o0 {2 m3 L q& M
會分配 2 個 16k 去緩存頁面,這樣看起來似乎更加合理。
t: \$ G5 N+ C3 n9 ]: }4 m7 o
fastcgi_busy_buffers_size 32k;
6 A6 `5 O; u0 ~/ i, F1 r0 h7 O% A, u
這個指令我也不知道是做什麼用,只知道默認值是 fastcgi_buffers 的兩倍。
( @# F7 B, g7 `$ d! f& ?
fastcgi_temp_file_write_size 32k;
6 W# }% @5 Q& q& k$ j# Q
在寫入 fastcgi_temp_path 時將用多大的數據塊,默認值是 fastcgi_buffers 的兩倍。
( h: w, Q* i$ |* R
fastcgi_cache TEST
; X$ ^) N ^ y9 C, R; j
開啟 FastCGI 緩存並且為其製定一個名稱。個人感覺開啟緩存非常有用,可以有效降低 CPU 負載,並且防止 502 錯誤。
1 X% O! ~6 g+ T$ B3 Z/ H
但是這個緩存會引起很多問題,因為它緩存的是動態頁面。具體使用還需根據自己的需求。
1 {" T0 }6 c; M6 V3 E# ^; N9 \6 D2 l
fastcgi_cache_valid 200 302 1h;
0 u3 u/ [0 K8 i& W- E
fastcgi_cache_valid 301 1d;
. I* s, ^9 I4 \6 i5 Y' T5 ^1 h
fastcgi_cache_valid any 1m;
8 Z' @- ~$ e2 E9 c$ n+ ^' h
為指定的應答代碼指定緩存時間,如上例中將 200,302 應答緩存一小時,301 應答緩存 1 天,其他為 1 分鐘。
N9 c9 z" }9 W
fastcgi_cache_min_uses 1;
- u0 a; x9 [: O" s/ e- J
緩存在 fastcgi_cache_path 指令 inactive 參數值時間內的最少使用次數,如上例,如果在 5 分鐘內某文件 1 次也沒有被
* X* ?$ z$ S$ {$ o" `- p
使用,那麼這個文件將被移除。
( W; b9 M! u. W4 p' h* C; S2 [
fastcgi_cache_use_stale error timeout invalid_header http_500;
x0 |3 ?3 u. N" \) k+ l3 U
不知道這個參數的作用,猜想應該是讓 nginx 知道哪些類型的緩存是沒用的。
: _ {- z+ x6 H7 g
以上為 nginx 中 FastCGI 相關參數,另外,FastCGI 自身也有一些配置需要進行優化,如果你使用 php-fpm 來管理
: }( Q) F$ ?7 q, l) ^$ F( T2 c- R% C
FastCGI,可以修改配置文件中的以下值:
D6 b" z9 I3 U9 i: \2 u
<value name="max_children">60</value>
/ U2 ]9 |3 x7 v( f) o
同時處理的並發請求數,即它將開啟最多 60 個子線程來處理並發連接。
2 y7 u- }$ p- W5 L
<value name="rlimit_files">102400</value>
/ C0 g% k5 w+ n. u
最多打開文件數。
! d( }1 _/ R: G6 s
<value name="max_requests">204800</value>
* o$ j+ V7 k% V9 _: h" a2 R/ N
每個進程在重置之前能夠執行的最多請求數。
" F, i5 K0 _. X" @5 `/ u) @6 {
( \0 ^ ^" l, F$ e& a& j) K
; E7 o" M' I! ]) g
參考資料:
Z" d9 T8 ]$ i( h9 d
http://demo.ckan.org/dataset/daf ... /download/nginx.pdf
2 B8 \- r, q7 |. V+ o
http://blog.chinaunix.net/u3/105004/showart_2087155.html
4 ?/ h1 u0 d! |' A+ |7 V9 G
http://nginx.179401.cn/
. d& V% O1 s: b2 F9 W
http://blog.s135.com/nginx_php_v5/
, R* w0 S- \- ~9 p, j( v" q
http://xyz.cinc.biz/2015/09/linux-nginx-php-fpm-connection.html
9 D+ ~ b# O. Z- S: @% F/ s* H, d
https://www.netroby.com/view/3128
0 ^: K- K. [1 `6 x1 p7 A+ n
fastcgi 快取:
8 [2 v J T8 B
https://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/
' ]$ t/ u0 d! @( U! b9 ]
其他:
9 Z3 |) U& A" M) v6 b
nginx設定檔內參數的詳細說明:
http://nginx.org/en/docs/http/ng ... l#keepalive_timeout
9 F* D/ e0 m5 u$ x. R
nginx優化:
http://www.jianshu.com/p/2184654ba4b2
- Q9 H$ J. W$ @% o9 u9 {4 J# }
gzip壓縮功能以減少網路傳輸檔案大小:
http://wenzhixin.net.cn/2013/11/10/server_gzip_on
" k* T- G' P& q8 W; W' L. R" y
' ?5 m# ~# l& q u# Z
( | y# w, V; @6 n4 l* a5 U5 g
: B {3 h# ~0 \5 h4 k( t F
' u7 R3 d6 {6 w7 y I% F* Q
歡迎光臨 52AV手機A片王|52AV.ONE (https://www.52av.one/)
Powered by Discuz! X3.2