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

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

作者: IT_man    時間: 2016-10-1 22:08
標題: nginx優化(針對nginx.conf)
以CentOS 之 nginx的設定檔是在 /etc/nginx/nginx.conf
" o2 Z/ Q$ ?0 `$ n一般來說 nginx 配置文件中對優化比較有作用的為以下幾項:" `6 G$ C# T5 F" W9 k
worker_processes 8;
' i5 ]: H1 A3 b2 }$ C/ U$ t- y7 Ynginx 進程數,建議按照 cpu 數目來指定,一般為它的倍數。
0 g! ^" G* \7 e% N0 Sworker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
& ?/ g/ n3 {* ^* b2 z! L( h- y為每個進程分配 cpu,上例中將 8 個進程分配到 8 個 cpu,當然可以寫多個,或者將一個進程分配到多個 cpu。$ m" L; O8 m- ~, [) e& j+ R8 H2 j3 |
worker_rlimit_nofile 102400;3 e5 g. N9 \' }8 X1 `! j# C2 H' w- B: n( E
這個指令是指當一個 nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與 nginx 進程數
3 y1 c+ X# O0 }" T" `1 m' Q* Y0 m相除,但是 nginx 分配請求並不是那麼均勻,所以最好與 ulimit -n 的值保持一致。* \4 \. c+ G- q9 H4 u$ Z/ y$ n* H
use epoll;: \; a/ S3 O( P9 h- i* Q% e, Q$ {: u
使用 epoll 的 I/O 模型,這個不用說了吧。7 Q- |( c$ i% x6 x/ H
worker_connections 102400;+ a7 l/ X9 F3 p% }8 t  y' |
每個進程允許的最多連接數,理論上每台 nginx 服務器的最大連接數為 worker_processes*worker_connections。, A; w2 M$ w; e$ H
keepalive_timeout 60;: L, E7 Q# K; P# u
keepalive 超時時間。
$ n9 G: T) E  `7 h, g8 I; Zclient_header_buffer_size 4k;" r$ u' s+ }2 D# J
客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過 1k,不過由3 O. y6 u5 o  Q4 @2 Q4 r
於一般系統分頁都要大於 1k,所以這裡設置為分頁大小。分頁大小可以用命令 getconf PAGESIZE 取得。/ m1 m8 [+ k; A+ s) a
open_file_cache max=102400 inactive=20s;
/ L4 f/ a- n) m& n& D3 o/ A1 V這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時
' B2 p) P2 [' H$ I) w間文件沒被請求後刪除緩存。3 @! }2 l+ s) T* k& i( b' s/ v
open_file_cache_valid 30s;
: T# S$ o, G* b1 B( Q3 B8 _這個是指多長時間檢查一次緩存的有效信息。" i; F: `. w. B0 a; X/ n
open_file_cache_min_uses 1;$ @, t" [  \3 H8 t' D
open_file_cache 指令中的 inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打
6 Y" k! d3 v' }4 I4 g" d  ]開的,如上例,如果有一個文件在 inactive 時間內一次沒被使用,它將被移除。. W, y/ Q  t( G/ s0 S: O

( f. X4 X" w: s
8 x# D) L8 z: A7 O# k/ Y2 F8 O關於內核參數的優化:4 b) X) H* p  d0 z* G3 \
net.ipv4.tcp_max_tw_buckets = 6000- C) @6 M' }6 ?0 O
timewait 的數量,默認是 180000。
) D& c4 Z5 ?$ d4 Hnet.ipv4.ip_local_port_range = 1024 65000
/ \3 K9 q% s& I5 S" u" r" @' n允許系統打開的端口範圍。
8 W' f. M& C' ?& t+ G- ~! g. z8 ^5 inet.ipv4.tcp_tw_recycle = 1
6 {0 `3 S4 F% R, v" p啟用 timewait 快速回收。* B' H7 [; Y1 J: R: B
net.ipv4.tcp_tw_reuse = 1( K- E) ]* ]9 _
開啟重用。允許將 TIME-WAIT sockets 重新用於新的 TCP 連接。
9 }- R, @  {! l/ o9 C7 c! j9 Rnet.ipv4.tcp_syncookies = 1
7 w* l3 H! h# e" ?. M開啟 SYN Cookies,當出現 SYN 等待隊列溢出時,啟用 cookies 來處理。
9 B5 p, E9 k& ]5 _net.core.somaxconn = 2621449 u" m; q; @! k
web 應用中 listen 函數的 backlog 默認會給我們內核參數的 net.core.somaxconn 限製到 128,而 nginx 定義的
; ], }6 ]( Y7 Y8 Z4 FNGX_LISTEN_BACKLOG 默認為 511,所以有必要調整這個值。
/ M$ K2 G" W: H9 g% onet.core.netdev_max_backlog = 262144
7 @# N& z3 t8 W5 g0 r每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。& }5 i1 u, y$ b! c' ~* l
net.ipv4.tcp_max_orphans = 262144
+ U, e, D; t) z) U3 |6 y系統中最多有多少個 TCP 套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤兒連接將即刻被復位並打2 a8 o0 y: G; g% f$ K
印出警告信息。這個限制僅僅是為了防止簡單的 DoS 攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值
$ _- e3 i: C, M! J) W(如果增加了內存之後)。/ X% j2 ^: P2 {7 o0 _
net.ipv4.tcp_max_syn_backlog = 262144+ g" A; K: @4 D0 b) @, D5 y& j+ ^
記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對於有 128M 內存的系統而言,缺省值是 1024,小內存的系" j8 v- g% Q! T2 K- W
統則是 128。
! \9 c1 @: W# I. H% ^) Z7 V6 Fnet.ipv4.tcp_timestamps = 0! K; {6 [5 X+ Q9 d
時間戳可以避免序列號的捲繞。一個 1Gbps 的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的- T! i2 a' l8 C; d) C
數據包。這裡需要將其關掉。; h& @- ?" G, s
net.ipv4.tcp_synack_retries = 1; t9 k; I: q" z# g8 R+ `/ u3 t
為了打開對端的連接,內核需要發送一個 SYN 並附帶一個回應前面一個 SYN 的 ACK。也就是所謂三次握手中的第二次4 o& l) A: v2 c6 |8 q* R
握手。這個設置決定了內核放棄連接之前發送 SYN+ACK 包的數量。
9 a  b) D3 o% o" z1 Qnet.ipv4.tcp_syn_retries = 1; d5 Z& ~% j+ |" c
在內核放棄建立連接之前發送 SYN 包的數量。
5 j5 a# [# J$ J" A" Snet.ipv4.tcp_fin_timeout = 1
; ~9 ?8 o) [. P# I: o/ s/ T如果套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間。對端可以出錯並永遠不關閉連接,甚
9 _' h; R" ?  V: q$ z至意外當機。缺省值是 60 秒。2.2 內核的通常值是 180 秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕
& k: c- O6 i6 l1 X: c" h6 v9 d0 p7 ^載的 WEB 服務器,也有因為大量的死套接字而內存溢出的風險,FIN- WAIT-2 的危險性比 FIN-WAIT-1 要小,因為它最
2 ^; l( ?( F2 K1 F+ h4 q多只能吃掉 1.5K 內存,但是它們的生存期長些。
* `/ C% N! c! A  T3 dnet.ipv4.tcp_keepalive_time = 304 _( G3 o: C$ U, Q; B7 p/ X
當 keepalive 起用的時候,TCP 發送 keepalive 消息的頻度。缺省是 2 小時。
* K5 J  B# L4 q  h5 e9 d1 M. n8 o1 i) o$ l/ E
$ _1 z3 Y' o( \. Q# d( X# h
下面貼一個完整的內核優化設置:+ }9 D  \) Q2 \! I
net.ipv4.ip_forward = 0
4 V5 S, j: {3 S' t  U2 dnet.ipv4.conf.default.rp_filter = 16 O; [7 {5 B- y
net.ipv4.conf.default.accept_source_route = 0
& T* w' D4 z" K/ pkernel.sysrq = 05 e( S; I; r- h8 {: ~. ~
kernel.core_uses_pid = 1
% k1 c! S2 |) e5 i; Jnet.ipv4.tcp_syncookies = 1$ r& y3 t& O# u/ P0 d
kernel.msgmnb = 65536
+ J- U2 C: m; M) Q9 hkernel.msgmax = 655369 F# I7 c" Y% x4 ?$ G4 ~8 W" r
kernel.shmmax = 68719476736
) ^8 U! X' i1 [9 skernel.shmall = 4294967296/ C2 R! k+ }+ W, s
net.ipv4.tcp_max_tw_buckets = 6000
3 t1 E/ G# a( f0 W* Onet.ipv4.tcp_sack = 1
3 Y% [2 t! s: f! }net.ipv4.tcp_window_scaling = 1
, {1 M+ t$ j+ `net.ipv4.tcp_rmem = 4096 87380 4194304
3 V# y: m. e( X# G$ \* U1 q  W- o: {net.ipv4.tcp_wmem = 4096 16384 4194304) `& v& A  s( d/ @
net.core.wmem_default = 8388608
: i3 H" H' D. C, H( f) X  d  Snet.core.rmem_default = 8388608" J# M5 J0 `8 g7 ]1 c" o( A
net.core.rmem_max = 16777216
9 Q  H" `' i4 t8 p' W* b/ Mnet.core.wmem_max = 16777216. W1 r3 M) V: U/ A) N/ L' H% L
net.core.netdev_max_backlog = 262144, k/ [" l; o- F1 G6 G9 p' K
net.core.somaxconn = 262144
" W3 u1 I0 z' P- Qnet.ipv4.tcp_max_orphans = 3276800& X1 a1 u( l1 A9 X$ B7 n) I
net.ipv4.tcp_max_syn_backlog = 262144( w' D# J6 F1 y6 A7 t& O, \
net.ipv4.tcp_timestamps = 0) T# p' x: ~% W- N  e& I
net.ipv4.tcp_synack_retries = 1
  t9 S' D$ \) x' _net.ipv4.tcp_syn_retries = 1# L8 x4 I  ?  I! W3 ~( a( K; o" f
net.ipv4.tcp_tw_recycle = 1
* M" t1 }- ]$ t. I/ K) Mnet.ipv4.tcp_tw_reuse = 1
7 J# y* g  m: x$ `! Unet.ipv4.tcp_mem = 94500000 915000000 927000000
+ Z# \2 p3 w; s8 @( Vnet.ipv4.tcp_fin_timeout = 1
; G( C& t! [8 f" knet.ipv4.tcp_keepalive_time = 30( C" w2 [% q- i8 _4 k. R0 _
net.ipv4.ip_local_port_range = 1024 65000
: ]: a0 L+ k' g: d+ Z
. u5 U' d: V7 G( S' H, M: _6 C! G. p5 y/ p' ~- R+ G" R
下面是一個簡單的 nginx 配置文件:nginx.conf! M8 K0 W  e! h, B* e
user www www;/ T" K% b* Q( E1 u% V
worker_processes 8;
; Q" K9 e; w' Y7 X) Cworker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;
7 E+ y# U, f  i  Ierror_log /www/log/nginx_error.log crit;
$ U* z9 a; c) X: h: a& ^8 R1 apid /usr/local/nginx/nginx.pid;
  L" M8 S6 T  q: T% T8 A3 h3 ?worker_rlimit_nofile 204800;
2 d6 |. P* m6 j& fevents
9 _: B9 [; q+ ~3 P0 t{) c( }1 v: L# c. y8 {+ a) [
  use epoll;
: M" f8 o4 J1 c, ]+ w9 l; ^  worker_connections 204800;
# J. y. T0 Y4 h! z( S( }}
7 n" V: c# Q& b8 J' ~0 m! @http
, |2 ~' W) r5 y- E{
9 n( p7 z% t3 Linclude mime.types;# B- w* w3 a0 i0 L  j
default_type application/octet-stream;
) f/ M- b: o9 ?6 w8 i charset utf-8;% C& q. `& E5 B" l* {
server_names_hash_bucket_size 128;. m6 \8 {4 _0 N1 W0 n
client_header_buffer_size 2k;
. M3 @8 r' ]/ i5 u( [# B large_client_header_buffers 4 4k;; \& D! {- L% [
client_max_body_size 8m;9 H# j9 H; G1 F0 y2 k8 s
sendfile on;
' A; ~; y) q" t: f9 O* o! J tcp_nopush on;/ E2 {: f9 Y1 }4 S5 Z
keepalive_timeout 60;
7 J0 N$ I" i# t- {- | fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
: ]2 l: I/ D1 p' y fastcgi_connect_timeout 300;4 |, A: @* C' V4 b: \2 P
fastcgi_send_timeout 300;& }* a* {1 A: K3 u9 N4 A1 n
fastcgi_read_timeout 300;: n: A5 B+ L( `3 M6 t
fastcgi_buffer_size 16k;
- A+ l. O0 G: _/ q% ^- }1 S% E) H fastcgi_buffers 16 16k;
4 ?, L) _% I0 K fastcgi_busy_buffers_size 16k;
3 s; i& O* {4 D0 Y fastcgi_temp_file_write_size 16k;
+ t3 Y' l) f; m7 }; F0 ^  k, q fastcgi_cache TEST;
7 v0 ?4 Y! ]* G# a* ^% U fastcgi_cache_valid 200 302 1h;" n+ e2 Q3 q+ L8 K. Z8 G8 v+ o
fastcgi_cache_valid 301 1d;
9 ~( `, I3 Q/ `% X1 w fastcgi_cache_valid any 1m;  ]2 T4 k4 ?5 C" |
fastcgi_cache_min_uses 1;$ ^& U8 C& C. `/ G6 D* Q
fastcgi_cache_use_stale error timeout invalid_header http_500;
2 e1 {7 E& C8 ^5 T, d open_file_cache max=204800 inactive=20s;8 h+ j# ]7 j& b4 L! M: s5 }# \; q/ g
open_file_cache_min_uses 1;! J3 M  D; `1 H/ U( ~: L
open_file_cache_valid 30s;
) |9 X8 o; h4 @: y. ?" K$ n( m tcp_nodelay on;: w) C' }4 X; i
gzip on;
& X8 z% |$ l! `& t% P0 v5 S& P gzip_min_length 1k;, u( k! S2 b$ p8 v
gzip_buffers 4 16k;
; R8 G, x. o6 I! C& r gzip_http_version 1.0;6 r! J6 J, T, x1 W% u
gzip_comp_level 2;
# N+ |% }/ A% {! j& `2 Y: @& f6 o gzip_types text/plain application/x-javascript text/css application/xml;
* ?9 Y* A$ `/ O. p gzip_vary on;
0 S2 y3 d! l+ j% ~ server0 f8 i  C% h: i( w, q9 _
{/ G8 V( C/ y% g( g% H# X
listen 8080;8 H# o6 p1 D" b2 w1 I
server_name backup.aiju.com;$ b& v8 l- x7 z$ r/ M( E. A
index index.php index.htm;& E2 m# C; O9 Y3 D6 ?7 W7 r
root /www/html/;
. c& q8 D# u  z* c2 q9 m" G: X location /status
' o* j7 B* A8 i {- W8 z. z$ @3 e: e3 X% C% b! {0 C
stub_status on;
- |+ n% I+ m- _  j7 C+ Y }9 f, ^9 d  P5 T! g
location ~ .*\.(php|php5)?$$ ?4 n5 l% E/ N3 O& z% c. h* t
{
' `9 G  ~7 I8 o9 h) |& U fastcgi_pass 127.0.0.1:9000;( V8 s/ B& |. J) b- P% c
fastcgi_index index.php;; U/ C% x9 j3 p$ F* N& v
include fcgi.conf;8 S! j3 _/ q5 B0 b% s
}& d& p* Z9 \! L& t: @; o  {( R
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
1 X, L5 U" O" o7 ^& h9 Y {
. J( p# X' _" E3 i expires 30d;/ }3 j0 f/ J( O% o# |% F, P
}" u; f$ M& b! P2 {  [
log_format access '$remote_addr - $remote_user [$time_local] "$request" '& @4 i3 r% t  q
'$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';
; F6 i  K" Y# V! x* v7 x- m8 v access_log /www/log/access.log access;5 w/ N, z" J6 m) G, T
}
# [# p! d; X1 K}0 R% \5 v2 r$ I. U" b
- b  L7 m) T( `6 ]. o7 ~
關於 FastCGI 的幾個指令:
# A+ o5 Y; @( W0 q; ?2 D) \" u0 Kfastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
4 ]7 a! S4 E* C: L# S5 ?這個指令為 FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。2 c) w# M4 J* t; F3 }( `% Z6 ^3 ?
fastcgi_connect_timeout 300;, O1 _2 i" U$ f
指定連接到後端 FastCGI 的超時時間。/ j  p6 V" h) c( Z  A
fastcgi_send_timeout 300;6 Y/ J! c4 C3 ]
向 FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向 FastCGI 傳送請求的超時時間。
$ D  T6 O% Q& ]. o8 efastcgi_read_timeout 300;- y7 k( _! X& q4 j7 a9 u
接收 FastCGI 應答的超時時間,這個值是指已經完成兩次握手後接收 FastCGI 應答的超時時間。
; D% i# U8 q9 ^fastcgi_buffer_size 16k;; y& h! M& C4 N* \
指定讀取 FastCGI 應答第一部分需要用多大的緩衝區,這裡可以設置為 fastcgi_buffers 指令指定的緩衝區大小,上面的! S" M# U! i( L' {% B
指令指定它將使用 1 個 16k 的緩衝區去讀取應答的第一部分,即應答頭,其實這個應答頭一般情況下都很小(不會超過& e$ {! j8 Y+ m: Y
1k),但是你如果在 fastcgi_buffers 指令中指定了緩衝區的大小,那麼它也會分配一個 fastcgi_buffers 指定的緩衝區大
4 Q5 L& k! g# S2 K6 l小去緩存。
3 _% R% B3 |& J9 efastcgi_buffers 16 16k;
- ^; e+ K# H( S0 o. U6 F指定本地需要用多少和多大的緩衝區來緩衝 FastCGI 的應答,如上所示,如果一個 php 腳本所產生的頁面大小為 256k,
- k0 _& H9 M5 P8 m2 t* m8 o. {則會為其分配 16 個 16k 的緩衝區來緩存,如果大於 256k ,增大於 256k 的部分會緩存到 fastcgi_temp 指定的路徑中,4 x. E5 g: c7 _+ z; O8 l
當然這對服務器負載來說是不明智的方案,因為內存中處理數據速度要快於硬盤,通常這個值的設置應該選擇一個你的
; S, T, e" R" S; X; _站點中的 php 腳本所產生的頁面大小的中間值,比如你的站點大部分腳本所產生的頁面大小為 256k 就可以把這個值設
  q( D6 J" ^+ m; o置為 16 16k,或者 4 64k 或者 64 4k,但很顯然,後兩種並不是好的設置方法,因為如果產生的頁面只有 32k,如果用 4
+ Y  U* E* b5 w4 L. r1 q64k 它會分配 1 個 64k 的緩衝區去緩存,而如果使用 64 4k 它會分配 8 個 4k 的緩衝區去緩存,而如果使用 16 16k 則它* @1 X* Z0 e% j9 G7 l* W: A
會分配 2 個 16k 去緩存頁面,這樣看起來似乎更加合理。
1 V0 X& V! W- Z5 P) I) ffastcgi_busy_buffers_size 32k;; a: i7 U$ H) C) H) s; j( s" _
這個指令我也不知道是做什麼用,只知道默認值是 fastcgi_buffers 的兩倍。
4 Y: `/ x7 C( V/ S: Nfastcgi_temp_file_write_size 32k;( ?# j0 P* \2 j
在寫入 fastcgi_temp_path 時將用多大的數據塊,默認值是 fastcgi_buffers 的兩倍。: k- f6 }4 W, h/ C* F
fastcgi_cache TEST* L8 L* T2 M0 T$ _4 O* j* [
開啟 FastCGI 緩存並且為其製定一個名稱。個人感覺開啟緩存非常有用,可以有效降低 CPU 負載,並且防止 502 錯誤。( Y3 n; j8 c! U4 y" e
但是這個緩存會引起很多問題,因為它緩存的是動態頁面。具體使用還需根據自己的需求。0 x0 W+ d4 D! r) h/ K
fastcgi_cache_valid 200 302 1h;$ w- N# }9 W7 C9 _- @& L
fastcgi_cache_valid 301 1d;
  `+ R# c( b1 k) O+ c6 vfastcgi_cache_valid any 1m;
9 @4 y$ L& w: A; a) G& V! D1 x為指定的應答代碼指定緩存時間,如上例中將 200,302 應答緩存一小時,301 應答緩存 1 天,其他為 1 分鐘。# \! K9 H' |, O/ }3 _. J0 y# w
fastcgi_cache_min_uses 1;4 L9 u" ?" X. ?
緩存在 fastcgi_cache_path 指令 inactive 參數值時間內的最少使用次數,如上例,如果在 5 分鐘內某文件 1 次也沒有被
0 }9 k& G* h% O使用,那麼這個文件將被移除。# C) T$ H/ P9 l7 n& K
fastcgi_cache_use_stale error timeout invalid_header http_500;
4 X6 x7 l. {2 k" d4 {. _7 V不知道這個參數的作用,猜想應該是讓 nginx 知道哪些類型的緩存是沒用的。$ j( x! L' A3 L3 C7 U
以上為 nginx 中 FastCGI 相關參數,另外,FastCGI 自身也有一些配置需要進行優化,如果你使用 php-fpm 來管理% ?0 q1 ~. u. T, U  j1 @) n
FastCGI,可以修改配置文件中的以下值:, _5 t4 I: r" _0 D4 k
<value name="max_children">60</value>9 k  A4 P: K& y' V
同時處理的並發請求數,即它將開啟最多 60 個子線程來處理並發連接。0 Z* a  E! C7 Z! ?9 H2 G
<value name="rlimit_files">102400</value>) p# P" y4 K- U, W( v  }- g! C1 v
最多打開文件數。
6 |: b% t8 o: @, M<value name="max_requests">204800</value>4 V$ w: H* {% f
每個進程在重置之前能夠執行的最多請求數。
; v# s0 f8 p; g# Z0 K$ z" o: _" D; h; R) x; s" r
+ |; c; c) Q4 d3 b0 ^- S
參考資料:% q5 R3 W- d0 s& f, G
http://demo.ckan.org/dataset/daf ... /download/nginx.pdf
( g5 ^7 h( N8 u+ ~http://blog.chinaunix.net/u3/105004/showart_2087155.html( I: T1 A: ~- q
http://nginx.179401.cn/4 ~2 Y( S1 g- h7 j- e8 t
http://blog.s135.com/nginx_php_v5/
7 k5 Y- t+ |8 C$ J% k# F9 A* Fhttp://xyz.cinc.biz/2015/09/linux-nginx-php-fpm-connection.html
- x/ B' B1 e' L0 h/ C4 Chttps://www.netroby.com/view/3128
$ k5 @* |$ o) r7 c: @fastcgi 快取:
' T7 A9 i, q7 `
https://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/
6 W+ p0 J7 `5 [8 m1 T7 B8 u
其他:
1 s* ]$ M) J! \  t6 k: A, Wnginx設定檔內參數的詳細說明: http://nginx.org/en/docs/http/ng ... l#keepalive_timeout
, `+ h1 ?0 X* [9 ?& tnginx優化:http://www.jianshu.com/p/2184654ba4b2
+ c5 ?: [4 v+ G2 t& _# hgzip壓縮功能以減少網路傳輸檔案大小:http://wenzhixin.net.cn/2013/11/10/server_gzip_on
, N3 G) `" h+ k# `* Y  l( V8 u
. \$ d0 a& w, a" Z
: S8 ]0 V  H5 [7 ~2 q3 ]
+ g4 t* b2 i& L. B9 U" }( Y

" ^/ S1 U& V* ^: L: H! d4 K




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