52AV手機A片王|52AV.ONE

標題: nginx優化(針對nginx.conf) [打印本頁]

作者: IT_man    時間: 2016-10-1 22:08
標題: nginx優化(針對nginx.conf)
以CentOS 之 nginx的設定檔是在 /etc/nginx/nginx.conf) q8 m  x$ J  ?% z+ e
一般來說 nginx 配置文件中對優化比較有作用的為以下幾項:/ O% f& m! n; Y2 x8 e; ~4 n
worker_processes 8;
$ Z: z$ I0 b* E/ w+ g3 Unginx 進程數,建議按照 cpu 數目來指定,一般為它的倍數。6 q" l- ^* `) w8 k+ O
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;4 g5 \" ?& N8 G) e' A& j1 d
為每個進程分配 cpu,上例中將 8 個進程分配到 8 個 cpu,當然可以寫多個,或者將一個進程分配到多個 cpu。
& ^) m0 f6 F7 [9 _' ]5 \worker_rlimit_nofile 102400;! M  q! q* U3 @9 K  F7 p
這個指令是指當一個 nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與 nginx 進程數" z* \8 g9 _. @+ U" C
相除,但是 nginx 分配請求並不是那麼均勻,所以最好與 ulimit -n 的值保持一致。
2 i! G( ~# }; c3 R' K8 R$ xuse epoll;
1 j' O8 H( ^/ R1 D$ @. u, G使用 epoll 的 I/O 模型,這個不用說了吧。
$ W, G9 s  _2 X5 qworker_connections 102400;
4 [7 D/ T3 \8 j' r每個進程允許的最多連接數,理論上每台 nginx 服務器的最大連接數為 worker_processes*worker_connections。
9 p( ~( L! E; o2 Nkeepalive_timeout 60;. C- U( E7 _2 y; M8 |0 n, w
keepalive 超時時間。; G9 z: P) J" b
client_header_buffer_size 4k;) `# i% r# j" s# N+ W6 E
客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過 1k,不過由3 N( U2 m4 k) V
於一般系統分頁都要大於 1k,所以這裡設置為分頁大小。分頁大小可以用命令 getconf PAGESIZE 取得。
' ~3 S+ S( w/ K: @+ \, q+ ]) iopen_file_cache max=102400 inactive=20s;
; U; U) r# U' T這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時2 L$ H' X* `9 [: {/ \1 Y
間文件沒被請求後刪除緩存。
9 Q8 m9 `: w* k# V, \open_file_cache_valid 30s;4 }8 Y- b/ R/ Z5 o+ F8 y
這個是指多長時間檢查一次緩存的有效信息。4 R! M& M3 I4 w- ^1 w8 n$ `% R
open_file_cache_min_uses 1;
% ^% L# D9 o: Zopen_file_cache 指令中的 inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打! p0 p. J* r& U7 R1 J
開的,如上例,如果有一個文件在 inactive 時間內一次沒被使用,它將被移除。
# \5 O: J* H& {0 L; u& }% m2 o0 D' F9 v  {: ]! c" {0 E
9 M* k& U+ o. A, Y& {- P1 h
關於內核參數的優化:* o6 \$ E$ F$ g8 ?, y
net.ipv4.tcp_max_tw_buckets = 6000
5 h% y- B) @$ d  t9 N1 g/ Y- ptimewait 的數量,默認是 180000。0 G; t8 H4 m  }7 a% H4 A# v  M
net.ipv4.ip_local_port_range = 1024 65000
& e0 b0 x9 v7 F8 u0 f9 S# Z& ^: K! C: R允許系統打開的端口範圍。3 M3 O2 v9 U" ?2 C9 N  q
net.ipv4.tcp_tw_recycle = 13 \2 P2 [) `; f# K) H5 E  I- c
啟用 timewait 快速回收。1 j3 D6 _7 V' |- w
net.ipv4.tcp_tw_reuse = 17 X9 t# Z2 i% t4 ^2 R6 T! d
開啟重用。允許將 TIME-WAIT sockets 重新用於新的 TCP 連接。) Q3 A+ g4 z9 S% P* ]
net.ipv4.tcp_syncookies = 1
2 b0 g$ e4 s9 _1 z( L& _1 }3 R. ?2 F開啟 SYN Cookies,當出現 SYN 等待隊列溢出時,啟用 cookies 來處理。
  S( p4 z; \" ~8 l& Q  Rnet.core.somaxconn = 262144, i4 g/ w( ~5 `- g8 ?
web 應用中 listen 函數的 backlog 默認會給我們內核參數的 net.core.somaxconn 限製到 128,而 nginx 定義的& L- h7 i5 Y: ~, p' O: {
NGX_LISTEN_BACKLOG 默認為 511,所以有必要調整這個值。6 Z- ^8 Q) _$ S  C; D/ |# B
net.core.netdev_max_backlog = 262144
& F2 ]2 t2 Z/ a6 q/ Z& C: M8 Y每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。
0 ?0 g& V$ ~& [2 ?3 inet.ipv4.tcp_max_orphans = 262144
0 h+ e# b/ w! u) Q5 w系統中最多有多少個 TCP 套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤兒連接將即刻被復位並打$ I7 E# X, z0 t$ \' ]
印出警告信息。這個限制僅僅是為了防止簡單的 DoS 攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值
# Z" u; y  P( M6 `+ W(如果增加了內存之後)。3 S: r& H2 }& o
net.ipv4.tcp_max_syn_backlog = 262144
* K# `0 Y" b' e* I/ @記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對於有 128M 內存的系統而言,缺省值是 1024,小內存的系& V4 S) j/ K9 z" @' J
統則是 128。9 q% x% c4 o' ?3 M+ r, H4 P1 v; L
net.ipv4.tcp_timestamps = 0
" r- }" S' p. i6 ?' P2 X時間戳可以避免序列號的捲繞。一個 1Gbps 的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的
; T' ?$ w  ^9 v數據包。這裡需要將其關掉。$ n: J2 }1 n1 V* u) E
net.ipv4.tcp_synack_retries = 1
/ R  {+ I; s2 \8 c0 W6 @8 j: @為了打開對端的連接,內核需要發送一個 SYN 並附帶一個回應前面一個 SYN 的 ACK。也就是所謂三次握手中的第二次
) t% C4 ^7 O0 ^& W. F9 D% G% a& s8 }握手。這個設置決定了內核放棄連接之前發送 SYN+ACK 包的數量。: W5 E# w6 e% t2 T4 n" B
net.ipv4.tcp_syn_retries = 1( B( C, [5 J" g) o) v5 s" R
在內核放棄建立連接之前發送 SYN 包的數量。
8 ]- ?  q* M0 n% `9 _net.ipv4.tcp_fin_timeout = 1- n$ @2 p) J! m' J6 ~
如果套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間。對端可以出錯並永遠不關閉連接,甚
1 d8 V  ~# l% R* A; l至意外當機。缺省值是 60 秒。2.2 內核的通常值是 180 秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕. |9 o, Z- ^+ j4 |
載的 WEB 服務器,也有因為大量的死套接字而內存溢出的風險,FIN- WAIT-2 的危險性比 FIN-WAIT-1 要小,因為它最
: {" b' }% w0 P! F: E多只能吃掉 1.5K 內存,但是它們的生存期長些。% p3 g% L& _2 c9 X( C+ V
net.ipv4.tcp_keepalive_time = 30- H3 H: ]( g- @2 P
當 keepalive 起用的時候,TCP 發送 keepalive 消息的頻度。缺省是 2 小時。" g4 J& q: z+ b/ k& G* N) C$ s5 N
& s  ]" d* u5 W3 P5 }/ Z( U. Q: \. ]

9 e; Y0 d8 w4 h* m5 V  s& T2 T& x+ C下面貼一個完整的內核優化設置:
1 q# E" |  g  l6 V1 J  pnet.ipv4.ip_forward = 0
  {! d6 Q# ]7 Ynet.ipv4.conf.default.rp_filter = 11 }* g) J; I' s/ r* T* l8 p7 z
net.ipv4.conf.default.accept_source_route = 0
/ K8 I' Z$ L  _* x4 N  Ekernel.sysrq = 02 t4 |& j- v5 S7 U6 g2 B6 H5 f/ o# z
kernel.core_uses_pid = 1
1 Y; t( F9 s! {+ Q2 v4 n% ~7 x& w+ j! x" `net.ipv4.tcp_syncookies = 1
( v8 j" G, M3 m6 _. D1 Rkernel.msgmnb = 655361 v/ j3 e9 w) P
kernel.msgmax = 65536
* x: g+ F* }& K6 ^5 t+ A" Kkernel.shmmax = 68719476736
) C3 Z  F1 _5 Fkernel.shmall = 4294967296
6 Q: }2 x+ f+ H) }5 onet.ipv4.tcp_max_tw_buckets = 60009 n( }, s2 j2 M/ c) \& X/ A
net.ipv4.tcp_sack = 1! c1 Q& v, w. ^
net.ipv4.tcp_window_scaling = 1$ V8 r$ M8 p7 h2 ^# U/ Y
net.ipv4.tcp_rmem = 4096 87380 4194304# Z% B+ R' W; P# \
net.ipv4.tcp_wmem = 4096 16384 4194304
7 `5 g! F6 @* }- p$ p6 Hnet.core.wmem_default = 8388608
* f  a) D! ]# T3 ]2 hnet.core.rmem_default = 8388608- }& C% E& ]. Z2 x' B% g; ]* R* x
net.core.rmem_max = 16777216
% i$ M, A4 a1 Vnet.core.wmem_max = 16777216
% ?. K/ y+ D3 j& B2 v  Znet.core.netdev_max_backlog = 262144/ m6 W" ~) t4 l1 o" ^% G
net.core.somaxconn = 262144
" S. U- w) L& [, v& v- ?net.ipv4.tcp_max_orphans = 3276800
6 C) G2 D1 A: j( snet.ipv4.tcp_max_syn_backlog = 262144; |6 X: ^, ?  c9 ^6 B
net.ipv4.tcp_timestamps = 0
, _9 B$ N6 U# _$ Tnet.ipv4.tcp_synack_retries = 12 T4 c6 {) G8 t8 l
net.ipv4.tcp_syn_retries = 19 M! R* N" K# R4 Q( t" h4 }8 Y# b2 E
net.ipv4.tcp_tw_recycle = 1
' O$ p+ J' N6 E9 y1 nnet.ipv4.tcp_tw_reuse = 1
  V' }5 ]3 I* Enet.ipv4.tcp_mem = 94500000 915000000 9270000008 W) q' z' u6 z+ p
net.ipv4.tcp_fin_timeout = 1
; G0 E; D" L9 |  Anet.ipv4.tcp_keepalive_time = 30
0 V$ `* y; F$ F: e3 i; y2 inet.ipv4.ip_local_port_range = 1024 65000
8 e& g* D2 s2 }2 j3 Y3 U  t) `) ^
- z3 J4 |5 h+ y! `* `1 D* I3 O" B5 c2 g6 U
下面是一個簡單的 nginx 配置文件:nginx.conf/ D% o9 R9 ?3 [: @
user www www;& c) m1 A- @. w$ S% Y+ L
worker_processes 8;
# v6 P! {# P8 N+ c0 o0 u9 l6 Yworker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;
9 I; L# A0 C" _error_log /www/log/nginx_error.log crit;
: Z& L" e; m2 q* \. opid /usr/local/nginx/nginx.pid;+ E3 {% k0 F4 N1 y
worker_rlimit_nofile 204800;
% V, r; u  s/ ^* P4 U  kevents
$ L, R' O5 H% `! l+ {{
- E- u! o4 `$ [; t$ S1 J9 ?  use epoll;
5 A; a2 o( B& h& w2 k  worker_connections 204800;7 S/ \8 r. J! O+ m6 ^
}
+ s2 C2 y( O& i0 q7 X8 N: Ihttp" k$ f% c3 w$ b
{
- ]3 Z: a) ~* i& X0 \include mime.types;
% e# {, {0 p0 L default_type application/octet-stream;
9 c: B3 ], |( R% g6 x0 |- K charset utf-8;& l6 K( C5 K, l- C* N
server_names_hash_bucket_size 128;
9 a# H( w% |& o3 n- t  g( y- h client_header_buffer_size 2k;7 H9 e4 S: Z$ |
large_client_header_buffers 4 4k;( p# h9 M9 d8 _. p# F& t! x
client_max_body_size 8m;' ^+ L& T5 i/ m) O' E9 e
sendfile on;
$ O( X8 D8 X5 q) E- y5 } tcp_nopush on;
* \) K: R8 h4 ]5 [1 s$ w: J keepalive_timeout 60;
" H/ d7 V1 i  f fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;" [* k* b$ t/ V$ Z& C" [* _
fastcgi_connect_timeout 300;
) l& k$ `$ g/ e0 i. ], N fastcgi_send_timeout 300;
2 {9 ^; d1 x3 K: F6 f fastcgi_read_timeout 300;/ I* q9 B+ V8 F: N' j$ |
fastcgi_buffer_size 16k;. C0 j- K+ M# o
fastcgi_buffers 16 16k;
- b$ u, s3 O; g7 w5 Y fastcgi_busy_buffers_size 16k;
; D9 ]" q& v/ S* |+ M fastcgi_temp_file_write_size 16k;
! z& u" X. \8 {" r5 P/ ], i, v fastcgi_cache TEST;
! S. H$ q% V" [ fastcgi_cache_valid 200 302 1h;: I: `, U5 K/ l
fastcgi_cache_valid 301 1d;
/ w( |) _( [# H' P1 \3 ` fastcgi_cache_valid any 1m;
1 ~' z8 E8 c2 [' _6 O8 S fastcgi_cache_min_uses 1;
( u% O# M0 ^4 a4 Q fastcgi_cache_use_stale error timeout invalid_header http_500;3 {+ @# i1 z# d6 A$ h, f* o
open_file_cache max=204800 inactive=20s;9 n' h- A, t- ^$ K& L# U
open_file_cache_min_uses 1;6 s, e. P) {- g, k# a) d' u
open_file_cache_valid 30s;5 M( ^: x- s* U4 J! m3 |2 v
tcp_nodelay on;& l% E9 i. n. {, n
gzip on;& Q( m4 f0 {! n! h
gzip_min_length 1k;
5 G# ?, f2 K/ i/ i# V gzip_buffers 4 16k;. h; n4 k/ V8 G2 k
gzip_http_version 1.0;
/ ]/ ^8 z/ L) a9 N9 u7 w! i& L  z( c gzip_comp_level 2;! s- R- [# h" j/ o' j6 Z% p( W0 E
gzip_types text/plain application/x-javascript text/css application/xml;& B- k0 V9 ^: ]) Z
gzip_vary on;# t6 |  B; q: G% V  S
server
' ^9 \& F) B& m, b {
" ]  W. ?% m3 {8 e" r. s) t listen 8080;- O& I, V+ t7 H4 f/ l; m) n
server_name backup.aiju.com;+ W0 g( ~3 f- K& x4 b6 r# b& L
index index.php index.htm;
# I: J' r; x; a. i- e root /www/html/;( B! q7 d: w" _, Q0 Q: p
location /status
9 U/ b7 J5 q% C, s$ J {( i9 \) k5 F5 t( s0 B( o2 W/ J% ^" D- @
stub_status on;4 s' S9 l" i) Z' d5 E4 C
}
6 Q8 V4 {' ~" P+ D8 | location ~ .*\.(php|php5)?$
. y2 }0 i, s. n, u; j {; @8 b$ E0 ^  ~5 H% A
fastcgi_pass 127.0.0.1:9000;0 T2 C$ l& [! d6 z" j1 c
fastcgi_index index.php;
* _7 b- t! }9 E# V# ]( y include fcgi.conf;0 [+ G- A" ^( |2 Z
}- _8 H1 C% `' j0 [. J! s
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
* c; {/ V/ z% z# O! }) K {$ V* \- m/ S8 q9 O( H9 N
expires 30d;
/ G& v& a+ J; u5 m" G1 K5 e }
7 L! X( V+ ^. G/ f& f log_format access '$remote_addr - $remote_user [$time_local] "$request" '5 l6 v2 n/ m. D8 R
'$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';7 E/ t, C0 j; o. J! C
access_log /www/log/access.log access;7 `$ W+ z6 N; b" V* m$ ?/ N
}( [1 N4 Y$ D# _
}5 y. y  r0 h! K7 D
3 `+ M9 G- u2 @$ k) |/ _2 P0 p0 h5 O
關於 FastCGI 的幾個指令:
0 ]3 _$ h* P- Yfastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
+ P9 u% a3 X3 e( `: _/ r: m9 W  C這個指令為 FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。
0 J4 S5 I0 n( X6 M. ofastcgi_connect_timeout 300;
' g3 ]4 Q( ]) T( i指定連接到後端 FastCGI 的超時時間。- G4 V8 L% j& l8 ~7 V, L
fastcgi_send_timeout 300;
- ?" O% b% Z! Z, ?8 e8 K向 FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向 FastCGI 傳送請求的超時時間。6 n# `' V; L! S* r7 `6 b5 V
fastcgi_read_timeout 300;. E/ p% m* f; v- U: \+ A3 ~
接收 FastCGI 應答的超時時間,這個值是指已經完成兩次握手後接收 FastCGI 應答的超時時間。8 J2 t" c: y' F5 y
fastcgi_buffer_size 16k;2 q+ K7 Z, {- m0 T
指定讀取 FastCGI 應答第一部分需要用多大的緩衝區,這裡可以設置為 fastcgi_buffers 指令指定的緩衝區大小,上面的
% i" `5 J, U( M" F指令指定它將使用 1 個 16k 的緩衝區去讀取應答的第一部分,即應答頭,其實這個應答頭一般情況下都很小(不會超過1 ^& ^, L* m% h
1k),但是你如果在 fastcgi_buffers 指令中指定了緩衝區的大小,那麼它也會分配一個 fastcgi_buffers 指定的緩衝區大
( p1 k: k' {7 R小去緩存。
2 k6 E: c' X8 M* `7 I* Zfastcgi_buffers 16 16k;
7 x- G. t5 V8 U1 q, A+ e8 J: i指定本地需要用多少和多大的緩衝區來緩衝 FastCGI 的應答,如上所示,如果一個 php 腳本所產生的頁面大小為 256k,. T7 d5 _; n2 j1 I/ Y0 V- l+ }
則會為其分配 16 個 16k 的緩衝區來緩存,如果大於 256k ,增大於 256k 的部分會緩存到 fastcgi_temp 指定的路徑中,0 N. [# M' D5 i! g
當然這對服務器負載來說是不明智的方案,因為內存中處理數據速度要快於硬盤,通常這個值的設置應該選擇一個你的
& Z/ v# C3 E$ V% F8 [: D8 K站點中的 php 腳本所產生的頁面大小的中間值,比如你的站點大部分腳本所產生的頁面大小為 256k 就可以把這個值設/ U% d- m* ]- r0 }$ b
置為 16 16k,或者 4 64k 或者 64 4k,但很顯然,後兩種並不是好的設置方法,因為如果產生的頁面只有 32k,如果用 4
/ i4 k! x4 E' O1 f) K64k 它會分配 1 個 64k 的緩衝區去緩存,而如果使用 64 4k 它會分配 8 個 4k 的緩衝區去緩存,而如果使用 16 16k 則它- `  o6 {" h/ ^$ W+ ?1 g
會分配 2 個 16k 去緩存頁面,這樣看起來似乎更加合理。
, a2 M  z; k8 i' c' f( c) e/ o% y* efastcgi_busy_buffers_size 32k;2 A: X) n& f* a: x; Q$ ]
這個指令我也不知道是做什麼用,只知道默認值是 fastcgi_buffers 的兩倍。
+ g' A; T: u2 m' H' ?fastcgi_temp_file_write_size 32k;
& \. @6 C& W5 t  T! k2 b在寫入 fastcgi_temp_path 時將用多大的數據塊,默認值是 fastcgi_buffers 的兩倍。: g; n4 g$ |& W9 ?- a
fastcgi_cache TEST1 K- e* Y/ A1 A4 f4 ]4 ~
開啟 FastCGI 緩存並且為其製定一個名稱。個人感覺開啟緩存非常有用,可以有效降低 CPU 負載,並且防止 502 錯誤。& W2 R* ~3 x  j
但是這個緩存會引起很多問題,因為它緩存的是動態頁面。具體使用還需根據自己的需求。
. ?8 V. F8 [, n9 o" v3 wfastcgi_cache_valid 200 302 1h;, j) X7 o3 U( n) h; h* s0 r$ p
fastcgi_cache_valid 301 1d;( V$ `! z; d* }* G! K0 u
fastcgi_cache_valid any 1m;
- ~3 \1 E8 R% f: y9 B) q為指定的應答代碼指定緩存時間,如上例中將 200,302 應答緩存一小時,301 應答緩存 1 天,其他為 1 分鐘。
% T+ @8 f" C/ \' R% u* ?8 wfastcgi_cache_min_uses 1;
3 _1 W, R& W' z9 t; F緩存在 fastcgi_cache_path 指令 inactive 參數值時間內的最少使用次數,如上例,如果在 5 分鐘內某文件 1 次也沒有被  V& k6 o" ~8 D6 u. m: u
使用,那麼這個文件將被移除。
6 R& O' C. c  Wfastcgi_cache_use_stale error timeout invalid_header http_500;
$ |. {, L6 A) O% b" ]% F不知道這個參數的作用,猜想應該是讓 nginx 知道哪些類型的緩存是沒用的。9 d2 m! D) a# |1 o: Q4 z: r6 t% m
以上為 nginx 中 FastCGI 相關參數,另外,FastCGI 自身也有一些配置需要進行優化,如果你使用 php-fpm 來管理6 F, ?/ e9 ?& F& s6 I: C* g
FastCGI,可以修改配置文件中的以下值:( A- W# e: e, a( z6 ^
<value name="max_children">60</value>1 A$ S- M, [$ r" r1 J
同時處理的並發請求數,即它將開啟最多 60 個子線程來處理並發連接。
; m- v4 S/ ?% ]- f" E<value name="rlimit_files">102400</value>
; I) s' s3 q! a. N" J/ j最多打開文件數。
, t* k2 [2 a. K& s6 l8 H! ]<value name="max_requests">204800</value>3 j+ j, k( S. {' ]# l3 F/ k
每個進程在重置之前能夠執行的最多請求數。
) A( @3 w5 d4 _! E
) m- w, f# U4 c) X- |8 k: O( L' h" {% K
參考資料:2 b0 a5 H, i- _* ~! j' u
http://demo.ckan.org/dataset/daf ... /download/nginx.pdf- N' W1 @8 O/ s( Z6 i4 @/ N
http://blog.chinaunix.net/u3/105004/showart_2087155.html
& P/ |2 R& H$ S$ j; v# whttp://nginx.179401.cn/' N; h! f0 L5 \6 I# f  u
http://blog.s135.com/nginx_php_v5/5 V3 [8 U" Y& d# u1 ~
http://xyz.cinc.biz/2015/09/linux-nginx-php-fpm-connection.html
7 k2 J5 U( j' a2 nhttps://www.netroby.com/view/31284 p% T1 ]9 a  E2 [
fastcgi 快取:/ X! \: H- k  N, C! f) W6 a, V% [
https://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/1 B8 ^$ ?- K. a- @/ b& x- k
其他:
4 z7 Y. k' h& j$ J% x8 M/ h3 L; Gnginx設定檔內參數的詳細說明: http://nginx.org/en/docs/http/ng ... l#keepalive_timeout0 x- M' f! k" |
nginx優化:http://www.jianshu.com/p/2184654ba4b29 T; r' t* F9 n
gzip壓縮功能以減少網路傳輸檔案大小:http://wenzhixin.net.cn/2013/11/10/server_gzip_on
; M0 J) c1 p; v- e$ t  R

" F) s4 J2 `% R7 z; A$ \  h8 a7 A& q8 r9 d0 q& a

- N3 W0 w- [* k5 E# S; |9 C4 t3 l; j! @2 o1 U5 X





歡迎光臨 52AV手機A片王|52AV.ONE (https://www.itech.casa/) Powered by Discuz! X3.2