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

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

作者: IT_man    時間: 2016-10-1 22:08
標題: nginx優化(針對nginx.conf)
以CentOS 之 nginx的設定檔是在 /etc/nginx/nginx.conf
5 K. i0 [+ B' O) c一般來說 nginx 配置文件中對優化比較有作用的為以下幾項:: t, {' ]% q! M" h: F0 k
worker_processes 8;* B; k$ q9 N6 K8 b( ~) ^  K% z
nginx 進程數,建議按照 cpu 數目來指定,一般為它的倍數。
4 }+ ^- n8 p  Y; L2 Nworker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
+ D6 I6 L- q* r2 ~: V, L2 k% k: m為每個進程分配 cpu,上例中將 8 個進程分配到 8 個 cpu,當然可以寫多個,或者將一個進程分配到多個 cpu。
( p  A7 p" S8 w1 z4 T/ f: Xworker_rlimit_nofile 102400;
* w: l* H5 E5 U; c; a5 Y0 [+ ^這個指令是指當一個 nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與 nginx 進程數, N0 H1 f( H5 i9 M# Q
相除,但是 nginx 分配請求並不是那麼均勻,所以最好與 ulimit -n 的值保持一致。
0 U$ a0 L8 p0 ^. o" Z( y. S1 a% suse epoll;
9 z* N' _5 o- \+ j0 a1 ]使用 epoll 的 I/O 模型,這個不用說了吧。# {5 Q% P) \, T) T# G; g
worker_connections 102400;  @- o( H: Z2 u
每個進程允許的最多連接數,理論上每台 nginx 服務器的最大連接數為 worker_processes*worker_connections。
- u$ A; l3 V2 s3 A$ Bkeepalive_timeout 60;) j1 L; ]6 E' I8 ?( w# z
keepalive 超時時間。
+ X. a/ h: v" ~- wclient_header_buffer_size 4k;5 n2 f  \) z6 p+ y
客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過 1k,不過由
2 i9 ~* y; g2 [, K% X於一般系統分頁都要大於 1k,所以這裡設置為分頁大小。分頁大小可以用命令 getconf PAGESIZE 取得。8 {2 Q- C0 a' v, I8 W
open_file_cache max=102400 inactive=20s;
: @. d' e' m- o2 j' s7 N* M這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時) v+ y4 D7 {' V. r
間文件沒被請求後刪除緩存。
: T: c2 u4 |: [open_file_cache_valid 30s;
+ \- {0 S8 i" E6 f! W+ H1 K2 A這個是指多長時間檢查一次緩存的有效信息。7 S" F4 o' n& P7 ?& n4 M# ^
open_file_cache_min_uses 1;
4 L8 P2 p. W6 f; `' _open_file_cache 指令中的 inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打
9 \1 w& V6 C/ K) ~開的,如上例,如果有一個文件在 inactive 時間內一次沒被使用,它將被移除。
" _* q' L4 I; Y! H1 ]8 [: W; T) u# d$ P2 U1 d
- v- }. K& J9 p  r3 Q8 v; J
關於內核參數的優化:# I* ~, G* t7 d8 w
net.ipv4.tcp_max_tw_buckets = 6000
, k# \8 E% o+ N2 ctimewait 的數量,默認是 180000。
& e8 C7 ~( X: U3 Cnet.ipv4.ip_local_port_range = 1024 65000
: ^7 ]- P+ i; X' f) e1 L允許系統打開的端口範圍。" H" O3 N/ L* a8 l3 ?/ N
net.ipv4.tcp_tw_recycle = 1
; G  {5 b/ x/ x; X! h  D啟用 timewait 快速回收。' n- D6 N2 ^2 F
net.ipv4.tcp_tw_reuse = 1
; ]  h5 H; G/ u  ?. l開啟重用。允許將 TIME-WAIT sockets 重新用於新的 TCP 連接。, L, d6 v/ D- {- D4 h! }
net.ipv4.tcp_syncookies = 1
1 t; q( m9 o. T1 u( P. L6 s  o& V" v開啟 SYN Cookies,當出現 SYN 等待隊列溢出時,啟用 cookies 來處理。
, G% M: [+ z. G9 Y6 X% `net.core.somaxconn = 2621448 {+ ?# y. i- A6 a; x/ N4 o
web 應用中 listen 函數的 backlog 默認會給我們內核參數的 net.core.somaxconn 限製到 128,而 nginx 定義的4 `: y& l* g! Q* k, y( ^7 S4 i
NGX_LISTEN_BACKLOG 默認為 511,所以有必要調整這個值。& W8 r( H. C1 @3 Z% H% w. g* }
net.core.netdev_max_backlog = 262144
  n/ i* y# W  S, j+ K每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。
# I5 X( j) X, \8 S2 q4 Hnet.ipv4.tcp_max_orphans = 262144) j' N  |' F* {, l1 v: Y, v8 ?7 i' Z
系統中最多有多少個 TCP 套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤兒連接將即刻被復位並打
# ]& B- }3 }1 z. Q, j! V印出警告信息。這個限制僅僅是為了防止簡單的 DoS 攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值! D0 q' h, T, Q, f
(如果增加了內存之後)。$ {+ w! C; ]$ {
net.ipv4.tcp_max_syn_backlog = 262144/ v, Z+ B3 K8 t0 p, r9 ^- k! a
記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對於有 128M 內存的系統而言,缺省值是 1024,小內存的系
- r1 h: I; ?) E: A5 x統則是 128。
/ |; x# M% k9 e) G% N  {, c4 A+ Rnet.ipv4.tcp_timestamps = 0
+ F* h( @( R( s% y. U. G時間戳可以避免序列號的捲繞。一個 1Gbps 的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的
  N9 c9 I" s' x& x7 }! y* p5 V: n$ H* D數據包。這裡需要將其關掉。
  S5 \: B: Y% e, h" i# C' T7 T  O" Fnet.ipv4.tcp_synack_retries = 1
5 n, D) ^, e; X/ U/ h為了打開對端的連接,內核需要發送一個 SYN 並附帶一個回應前面一個 SYN 的 ACK。也就是所謂三次握手中的第二次  n! ]+ j5 H1 S. P  b8 |
握手。這個設置決定了內核放棄連接之前發送 SYN+ACK 包的數量。' `! {1 N9 ?- G8 L: Z3 M
net.ipv4.tcp_syn_retries = 13 j4 O6 d9 Q/ g2 d
在內核放棄建立連接之前發送 SYN 包的數量。; H# X( V6 S+ l4 Q
net.ipv4.tcp_fin_timeout = 1
& x7 T0 W1 H( ^0 t- L如果套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間。對端可以出錯並永遠不關閉連接,甚
7 h% K- p1 i' C: X至意外當機。缺省值是 60 秒。2.2 內核的通常值是 180 秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕
# O/ r9 _% J" Y0 i0 h; g: \載的 WEB 服務器,也有因為大量的死套接字而內存溢出的風險,FIN- WAIT-2 的危險性比 FIN-WAIT-1 要小,因為它最) M1 ]: A2 l  }1 s& a5 D" P3 }2 O
多只能吃掉 1.5K 內存,但是它們的生存期長些。
# s* o4 Z8 _' X: r; }net.ipv4.tcp_keepalive_time = 30
  X' i4 y/ u  Z8 U$ {當 keepalive 起用的時候,TCP 發送 keepalive 消息的頻度。缺省是 2 小時。
$ S0 B+ m, @7 @3 r* @$ `0 k; E* k2 }! b6 D/ F6 C

+ ]2 X  ~2 |4 R9 y3 S下面貼一個完整的內核優化設置:
0 S4 v( m. ^& K& O+ s( H) Y* unet.ipv4.ip_forward = 0
- F4 H: C3 @! \net.ipv4.conf.default.rp_filter = 1
! S: o1 S+ G1 U' m1 {: l! C: q( Inet.ipv4.conf.default.accept_source_route = 0
$ r$ y+ `. _: I; b8 [$ e/ Vkernel.sysrq = 02 x2 u2 ^( K! @9 x8 F" O4 }: U
kernel.core_uses_pid = 13 p: A3 s" _6 Y' n3 @7 C5 }# m
net.ipv4.tcp_syncookies = 1( L* K( ^- M; k* _& O. r
kernel.msgmnb = 655362 X/ ?: _3 `  I3 ]8 j% E3 G6 j
kernel.msgmax = 65536
2 H* J5 G( X/ y: {kernel.shmmax = 68719476736; ?2 }  S$ |5 u! l" h6 I& D
kernel.shmall = 4294967296
+ p: g7 K/ ^# L3 o! R9 Anet.ipv4.tcp_max_tw_buckets = 60008 z8 Q/ j) x  {
net.ipv4.tcp_sack = 1# S* `' d+ H  k. m! o
net.ipv4.tcp_window_scaling = 1
' c* ?) ?( C% V! {net.ipv4.tcp_rmem = 4096 87380 4194304) n% N; @: j7 \. \
net.ipv4.tcp_wmem = 4096 16384 4194304  x# U+ g2 K+ }) ~; e2 a
net.core.wmem_default = 8388608
% D3 u1 r- }. G. l: q% j$ Znet.core.rmem_default = 8388608
  s1 y- a, `) `; a% znet.core.rmem_max = 167772168 X% \# Z  U9 t  Q# p! T$ t' Y, P+ E
net.core.wmem_max = 16777216! u7 y3 G0 ]& Z- [; X0 G
net.core.netdev_max_backlog = 262144
! q" D5 h/ x! V: anet.core.somaxconn = 2621446 O$ ~+ d% }: g9 w! N$ p
net.ipv4.tcp_max_orphans = 3276800
2 o. F1 I! u$ |# V8 knet.ipv4.tcp_max_syn_backlog = 2621444 {. L2 P( G+ ^- N  x; a, H5 ^( A7 J
net.ipv4.tcp_timestamps = 0
  W5 F) h% k5 y! \7 N1 Jnet.ipv4.tcp_synack_retries = 1
9 u& m  T' O7 unet.ipv4.tcp_syn_retries = 12 H9 T! \' X* O* P
net.ipv4.tcp_tw_recycle = 1, ?/ ^" q: j8 H4 k4 P+ d
net.ipv4.tcp_tw_reuse = 10 p% Q7 a$ J( N; F3 N& j, O$ Q
net.ipv4.tcp_mem = 94500000 915000000 927000000
9 M& R$ u( Z, n. H7 r! nnet.ipv4.tcp_fin_timeout = 1
3 I0 w, V# D) x2 z* e; [net.ipv4.tcp_keepalive_time = 30
4 b0 Y$ A6 F# d1 Y* e/ O* jnet.ipv4.ip_local_port_range = 1024 65000
# P9 [9 ~# D: E* L) c9 t! N; D4 R% z$ g( T
9 g/ L8 a+ M% Q* r! ?+ C" T
下面是一個簡單的 nginx 配置文件:nginx.conf
; P/ B% J% T' v' v3 H# t' muser www www;
. O/ B! p" m* a# sworker_processes 8;- b7 f! R8 m3 c2 y6 ?! {; d+ v
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;
$ `8 Y2 \  a; p; k  e+ l( Uerror_log /www/log/nginx_error.log crit;
5 ]8 c* U3 z0 E9 d/ u9 \( b8 spid /usr/local/nginx/nginx.pid;
1 t- u1 h' ^: e, |# S+ O: O( `worker_rlimit_nofile 204800;0 w: k. d* S: g( y& `6 i
events
1 o- _8 ~/ t& d& F6 _7 r{
, D4 E6 t3 ]7 C9 P4 l  use epoll;: _$ D' i! v4 Q
  worker_connections 204800;# A3 I3 d  `5 p" q
}
; h& r6 j0 P/ ]5 phttp
# c4 |+ Y: N! T0 b! u( }5 p{
0 ~1 L( s4 _5 C+ `+ U7 hinclude mime.types;8 L, V: x, ^  I
default_type application/octet-stream;
$ y/ T! e/ j1 R charset utf-8;
1 p6 [4 K- `" l. B8 X( Q  g* T server_names_hash_bucket_size 128;
- D- n0 u& Y) `& N client_header_buffer_size 2k;
) m3 d/ u3 |# V0 o2 P large_client_header_buffers 4 4k;% S7 F3 \6 Y% @+ U  s6 q9 @
client_max_body_size 8m;7 n! U, b  y" i* S6 f' o4 |/ Q
sendfile on;
3 U/ u/ F4 u" d tcp_nopush on;4 R8 C0 U* v$ N" {
keepalive_timeout 60;
% G$ h0 R1 E8 d; V4 p fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;' t% W) i- V# i, m* i( `! v/ x
fastcgi_connect_timeout 300;
4 s# I2 s0 T0 j  ^' S  ~! j' Q fastcgi_send_timeout 300;4 \# V5 Z0 M# T5 A; Y/ |
fastcgi_read_timeout 300;
/ A3 b/ C: v$ U5 Q fastcgi_buffer_size 16k;$ w- \- m3 w4 C
fastcgi_buffers 16 16k;
( a3 x1 v5 A8 B, \9 O0 Y0 x fastcgi_busy_buffers_size 16k;
6 J) ^0 w3 ^' }& |& I- P# Y6 I fastcgi_temp_file_write_size 16k;: S9 w* E$ E- q5 c* M0 u
fastcgi_cache TEST;
, d/ h4 S! X: |3 e  _) Z3 N4 K fastcgi_cache_valid 200 302 1h;
1 {+ a3 E: |- j. [ fastcgi_cache_valid 301 1d;' g$ _8 \1 j4 |  s# t
fastcgi_cache_valid any 1m;
% {( j2 K4 t' g: @% K* \3 O fastcgi_cache_min_uses 1;& _. k% c% U% h7 \. _
fastcgi_cache_use_stale error timeout invalid_header http_500;
3 b! v4 n& u$ B4 U$ V3 n- R! x7 g open_file_cache max=204800 inactive=20s;
8 r* \: @( I8 n+ U0 `- H# z open_file_cache_min_uses 1;. ~: X2 f0 M; {
open_file_cache_valid 30s;7 m2 j% y" j$ P) @6 J# o  w) Z  O
tcp_nodelay on;
( W/ f- Y1 }% K( H6 s" Y gzip on;" M* c% g6 p) M* d+ ?; [: K
gzip_min_length 1k;
1 j$ w5 O! O' Y0 Z( a0 b2 H gzip_buffers 4 16k;! M1 E$ B" a" I" R/ J
gzip_http_version 1.0;/ ]' `- s  y3 }2 |" v
gzip_comp_level 2;
4 e$ \& k' e/ w+ y gzip_types text/plain application/x-javascript text/css application/xml;
# L, t5 U8 {" ` gzip_vary on;
( `6 u$ X4 n. Y* V# Q& M2 [ server
8 _. r9 G7 m" M/ h {& T. C4 ~9 W% l: r
listen 8080;7 I4 O) o0 C4 y  v, L1 f
server_name backup.aiju.com;
! C. e( |% z, |7 T8 } index index.php index.htm;, t) ?" E) R0 R. [0 z5 P
root /www/html/;7 ?# ~. E" Y* }
location /status/ Q2 ~, u; l4 m
{7 U9 f0 y  ?, W: }# s
stub_status on;
# i- S, z' n3 ]7 X }
0 G- I) R6 _5 c location ~ .*\.(php|php5)?$
$ P) k+ i6 P" T# m- m; V$ S {
* [* f$ u0 l8 P) w$ h  Q fastcgi_pass 127.0.0.1:9000;
. k0 Y! q. {* u6 O- p fastcgi_index index.php;
' X- C' A2 m7 x" O& w) y* e4 O include fcgi.conf;" [: |; U, |2 F) J
}
- `' H3 h% |: Y4 r1 Y& ? location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
) E* m4 T1 c9 n- ]' G! A) u; M* i {1 R: w" D0 @. G# {
expires 30d;7 T6 g* X) Y: ~
}
' I% X% z$ d; } log_format access '$remote_addr - $remote_user [$time_local] "$request" '
: O% x8 f/ P) x/ p0 h '$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';
: L: H6 |2 w( Z1 Y; K, M access_log /www/log/access.log access;0 [5 a* }: t% x7 O% m5 \  Y
}
" E* w* H& f9 c' v* q# L}, k  f% v0 ^+ ~
" H/ i/ E* ^. N$ r6 z) S
關於 FastCGI 的幾個指令:2 g+ r/ I; {: ]
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;7 F/ y6 @! @3 Z2 f. s( y
這個指令為 FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。
$ k; G. I; m; k4 `: nfastcgi_connect_timeout 300;3 E, [* ^! F! {- W  G
指定連接到後端 FastCGI 的超時時間。: g1 G; X" {9 Y" v
fastcgi_send_timeout 300;
* o6 P& R4 h( Z6 |向 FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向 FastCGI 傳送請求的超時時間。  T( z+ d. u8 P9 y2 U
fastcgi_read_timeout 300;
7 Q' A. w0 D" D8 V: L. G  ^$ @接收 FastCGI 應答的超時時間,這個值是指已經完成兩次握手後接收 FastCGI 應答的超時時間。
0 F4 b  ^. @. S/ z6 g1 a2 Ufastcgi_buffer_size 16k;; J) }! l; [. A; o
指定讀取 FastCGI 應答第一部分需要用多大的緩衝區,這裡可以設置為 fastcgi_buffers 指令指定的緩衝區大小,上面的; p9 K6 l" j( M  `/ w
指令指定它將使用 1 個 16k 的緩衝區去讀取應答的第一部分,即應答頭,其實這個應答頭一般情況下都很小(不會超過: U+ p: f1 H& V8 O9 W+ U
1k),但是你如果在 fastcgi_buffers 指令中指定了緩衝區的大小,那麼它也會分配一個 fastcgi_buffers 指定的緩衝區大! W3 a% k( _& x& m
小去緩存。
& P. X7 C( c4 V9 @' d/ O' P9 W# b& ffastcgi_buffers 16 16k;
2 t3 \6 j9 c, k& Q3 `指定本地需要用多少和多大的緩衝區來緩衝 FastCGI 的應答,如上所示,如果一個 php 腳本所產生的頁面大小為 256k,
9 T0 J  O) u9 ?" H, N6 Y, s/ A+ f則會為其分配 16 個 16k 的緩衝區來緩存,如果大於 256k ,增大於 256k 的部分會緩存到 fastcgi_temp 指定的路徑中,
( G& M7 h" i8 r* y當然這對服務器負載來說是不明智的方案,因為內存中處理數據速度要快於硬盤,通常這個值的設置應該選擇一個你的
5 l/ x  |, o; |3 b( A站點中的 php 腳本所產生的頁面大小的中間值,比如你的站點大部分腳本所產生的頁面大小為 256k 就可以把這個值設
6 R' P  J. \! L  C; ]置為 16 16k,或者 4 64k 或者 64 4k,但很顯然,後兩種並不是好的設置方法,因為如果產生的頁面只有 32k,如果用 4
2 s* D; X. h& |9 [& B5 z& Y64k 它會分配 1 個 64k 的緩衝區去緩存,而如果使用 64 4k 它會分配 8 個 4k 的緩衝區去緩存,而如果使用 16 16k 則它
$ m& a# e2 j5 x, N會分配 2 個 16k 去緩存頁面,這樣看起來似乎更加合理。
2 U# p* O% g2 gfastcgi_busy_buffers_size 32k;; B: P  y2 V+ U5 p, n+ ]5 u7 V  s
這個指令我也不知道是做什麼用,只知道默認值是 fastcgi_buffers 的兩倍。
4 D0 V1 |! ^, _! N2 W4 v( P+ Ifastcgi_temp_file_write_size 32k;
! U# i% `% _( W2 _: w在寫入 fastcgi_temp_path 時將用多大的數據塊,默認值是 fastcgi_buffers 的兩倍。4 V, i9 l, p/ P0 l0 Z+ z3 A
fastcgi_cache TEST- o$ p; |& H) g% S) B
開啟 FastCGI 緩存並且為其製定一個名稱。個人感覺開啟緩存非常有用,可以有效降低 CPU 負載,並且防止 502 錯誤。4 i% j, H0 Q" X+ ~5 u
但是這個緩存會引起很多問題,因為它緩存的是動態頁面。具體使用還需根據自己的需求。
# d1 [9 O/ e9 Y& P+ cfastcgi_cache_valid 200 302 1h;- B+ n& F! Z, U1 V: }" M) d- J
fastcgi_cache_valid 301 1d;
' [- D- g, g3 f' @  D+ X! mfastcgi_cache_valid any 1m;6 i. I$ r5 R! N# w* m
為指定的應答代碼指定緩存時間,如上例中將 200,302 應答緩存一小時,301 應答緩存 1 天,其他為 1 分鐘。
7 O* w; E5 ~0 p) R  l, Ifastcgi_cache_min_uses 1;6 g+ {9 _2 k7 n( A
緩存在 fastcgi_cache_path 指令 inactive 參數值時間內的最少使用次數,如上例,如果在 5 分鐘內某文件 1 次也沒有被
" _' X7 [6 \* U7 X$ M# W使用,那麼這個文件將被移除。! m: Z6 i1 X1 O
fastcgi_cache_use_stale error timeout invalid_header http_500;" Z8 g. p8 k8 J$ _  ^2 \1 [# i1 k
不知道這個參數的作用,猜想應該是讓 nginx 知道哪些類型的緩存是沒用的。
4 P- X! q1 w" M0 E) \以上為 nginx 中 FastCGI 相關參數,另外,FastCGI 自身也有一些配置需要進行優化,如果你使用 php-fpm 來管理( X) C1 t% t$ d
FastCGI,可以修改配置文件中的以下值:3 U1 Q. C, Y) y) x* ~6 j8 A
<value name="max_children">60</value>2 K% S. b* ~) \& p
同時處理的並發請求數,即它將開啟最多 60 個子線程來處理並發連接。
  g9 J. X  {1 c<value name="rlimit_files">102400</value>
+ O3 C+ w4 I# X) ^最多打開文件數。; r5 C0 i& @8 `0 e" L1 j
<value name="max_requests">204800</value>
2 q& P* A; e$ g  d7 r% R- p每個進程在重置之前能夠執行的最多請求數。
$ w8 x$ `2 r- \4 q$ o" K
9 j5 N: m+ Y2 G9 p1 G- Z" v5 |+ F, {
參考資料:
6 L* ^, c7 t# Xhttp://demo.ckan.org/dataset/daf ... /download/nginx.pdf
9 ?8 I7 C4 v$ n7 i5 @+ ?0 shttp://blog.chinaunix.net/u3/105004/showart_2087155.html
. d8 o' k8 M, I; {http://nginx.179401.cn/8 Z2 Q: C3 U8 t  o1 B% E4 k
http://blog.s135.com/nginx_php_v5/, u+ E5 D# U  P" ?
http://xyz.cinc.biz/2015/09/linux-nginx-php-fpm-connection.html1 B6 H3 S3 `/ j/ w& s6 e, U. D
https://www.netroby.com/view/3128
  g% @* {. c& [$ S, W% D% zfastcgi 快取:1 M: w3 h9 F9 ~: E7 k7 i4 ]
https://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/( F; J4 ?8 {- L% a: U
其他:
8 f/ s$ t7 Y% c* B* B+ ~nginx設定檔內參數的詳細說明: http://nginx.org/en/docs/http/ng ... l#keepalive_timeout( h6 ?$ S" r4 I5 y
nginx優化:http://www.jianshu.com/p/2184654ba4b2
) R8 _' }) U1 l# {9 T2 ^$ ugzip壓縮功能以減少網路傳輸檔案大小:http://wenzhixin.net.cn/2013/11/10/server_gzip_on1 \3 Q" W! n( A5 a: b, D& \1 X' W# j
. T) U5 d# N8 G5 S5 R, X- C: T- o, I

5 q- f+ v6 r" z) `6 [- n  F7 n9 Z0 Q; B9 f) `/ ^
$ M' \5 U0 \5 W, F  e  P





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