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

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

作者: IT_man    時間: 2016-10-1 22:08
標題: nginx優化(針對nginx.conf)
以CentOS 之 nginx的設定檔是在 /etc/nginx/nginx.conf
: k% D1 e, ]; L) t& p一般來說 nginx 配置文件中對優化比較有作用的為以下幾項:
% L5 ?2 W2 S! a) j# C6 E( {worker_processes 8;. I" ?- |; A8 Z& E) O1 _
nginx 進程數,建議按照 cpu 數目來指定,一般為它的倍數。5 ]& K9 R3 l/ q" a+ x1 f
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
, e% t0 {9 h' w5 Q5 x為每個進程分配 cpu,上例中將 8 個進程分配到 8 個 cpu,當然可以寫多個,或者將一個進程分配到多個 cpu。+ m- m7 S) v9 o8 N" g0 m
worker_rlimit_nofile 102400;0 B8 ~4 {% C- q, X
這個指令是指當一個 nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與 nginx 進程數5 l: H6 X+ _$ y
相除,但是 nginx 分配請求並不是那麼均勻,所以最好與 ulimit -n 的值保持一致。
% Z6 G$ U) u9 y9 A+ S( P* Xuse epoll;
' v! ^% z# I5 J, j! O" y6 Q使用 epoll 的 I/O 模型,這個不用說了吧。: |1 G; _" M! d2 b
worker_connections 102400;
  [  h1 |- ^- \+ ^每個進程允許的最多連接數,理論上每台 nginx 服務器的最大連接數為 worker_processes*worker_connections。4 I9 A9 F2 R, d4 _; v
keepalive_timeout 60;* u. l3 X- F6 ]
keepalive 超時時間。
' J. }; u, f; Q! d( f1 rclient_header_buffer_size 4k;0 M& B! ^$ c) c% o) ?; F( ~
客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過 1k,不過由2 T. t9 \: p/ t, q
於一般系統分頁都要大於 1k,所以這裡設置為分頁大小。分頁大小可以用命令 getconf PAGESIZE 取得。9 H! ]7 D1 G! f
open_file_cache max=102400 inactive=20s;
8 q. `* O" v4 K0 d  f; H這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時5 t, n7 Q0 |/ D9 g. r4 V
間文件沒被請求後刪除緩存。# e( N  `+ |4 y2 r4 j1 d
open_file_cache_valid 30s;
/ K' f* _$ t& y) |5 h# H  ^( P+ i這個是指多長時間檢查一次緩存的有效信息。& L+ z9 f% S1 `! }5 x
open_file_cache_min_uses 1;
* c+ n* ^' r( e. P5 Y5 a1 yopen_file_cache 指令中的 inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打4 E: j& a) d' c5 s
開的,如上例,如果有一個文件在 inactive 時間內一次沒被使用,它將被移除。" u% s/ B1 ~8 w& `: y: n5 D# ~

, x' l* {! |! L; z; j3 B
+ q) F5 B3 U/ l( z關於內核參數的優化:
1 V/ N2 l3 s# Y6 N: Pnet.ipv4.tcp_max_tw_buckets = 60005 I0 f3 k4 d  @* L
timewait 的數量,默認是 180000。
+ f3 {: A- z( n& ]0 jnet.ipv4.ip_local_port_range = 1024 65000
* Z1 Z- P/ G  F6 l; ^允許系統打開的端口範圍。
) |$ X! y  v* T% G/ Dnet.ipv4.tcp_tw_recycle = 1
- w2 \3 A. E. K. l, G! M9 n: V啟用 timewait 快速回收。
0 k; Z3 \3 |  T# f2 Znet.ipv4.tcp_tw_reuse = 10 M/ S% H- ?. ?' H& T2 m4 m
開啟重用。允許將 TIME-WAIT sockets 重新用於新的 TCP 連接。
/ Y3 x, j8 W0 A: Hnet.ipv4.tcp_syncookies = 16 ~9 p* P+ }5 p+ u
開啟 SYN Cookies,當出現 SYN 等待隊列溢出時,啟用 cookies 來處理。7 ^+ g2 C; b' G1 o0 d- ]1 y
net.core.somaxconn = 262144$ b! D4 U" s( _" [' v% |3 T  z
web 應用中 listen 函數的 backlog 默認會給我們內核參數的 net.core.somaxconn 限製到 128,而 nginx 定義的
8 a7 _" O8 H. i4 b6 T$ ^, }  B. lNGX_LISTEN_BACKLOG 默認為 511,所以有必要調整這個值。
8 v6 d. q5 \" c3 D8 `# Vnet.core.netdev_max_backlog = 262144# P' H& J" X0 }, x  g0 d
每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。" B6 P' V3 O. o7 ]
net.ipv4.tcp_max_orphans = 262144% a6 c$ W; _& y% @
系統中最多有多少個 TCP 套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤兒連接將即刻被復位並打% D+ y4 a: g, X) Y% h4 P
印出警告信息。這個限制僅僅是為了防止簡單的 DoS 攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值
& w% b  U; {# c( X$ ~2 G. i# [(如果增加了內存之後)。
1 t5 x& I* E; m8 Tnet.ipv4.tcp_max_syn_backlog = 262144
+ E$ z7 y1 f0 X% G- h- H記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對於有 128M 內存的系統而言,缺省值是 1024,小內存的系, e0 T$ N: d& g: f( X
統則是 128。) s# n* s( C% T% z
net.ipv4.tcp_timestamps = 0& W8 s$ T& ?% @# T
時間戳可以避免序列號的捲繞。一個 1Gbps 的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的0 v, v1 ^/ O/ a" Q. {
數據包。這裡需要將其關掉。
& C  [& W# {( r) @# ^$ u4 pnet.ipv4.tcp_synack_retries = 19 r! J% M: D' J7 [
為了打開對端的連接,內核需要發送一個 SYN 並附帶一個回應前面一個 SYN 的 ACK。也就是所謂三次握手中的第二次2 K: N+ {- W& b5 F, C* R5 Q6 _
握手。這個設置決定了內核放棄連接之前發送 SYN+ACK 包的數量。
. w  \' F* r  c. T4 L- W% wnet.ipv4.tcp_syn_retries = 1+ |1 m5 C4 S1 D
在內核放棄建立連接之前發送 SYN 包的數量。
" F3 w: c3 F8 c( {- K% }; ?+ Cnet.ipv4.tcp_fin_timeout = 1
% @' z/ x# e7 x) |5 S4 N0 s% s如果套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間。對端可以出錯並永遠不關閉連接,甚
# V/ u" ~. G5 `& W至意外當機。缺省值是 60 秒。2.2 內核的通常值是 180 秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕
! p9 a8 @1 b* N: G% F6 ^  _8 d載的 WEB 服務器,也有因為大量的死套接字而內存溢出的風險,FIN- WAIT-2 的危險性比 FIN-WAIT-1 要小,因為它最
# _# n5 r* V# K4 j2 z多只能吃掉 1.5K 內存,但是它們的生存期長些。
* N& G% m, R: l+ \net.ipv4.tcp_keepalive_time = 30! F1 E' Y: i0 P5 i
當 keepalive 起用的時候,TCP 發送 keepalive 消息的頻度。缺省是 2 小時。# J* d) V1 }: ~& T+ s

8 P' n" Z$ v0 q, N+ I3 g
3 k& Q  G% ~; z下面貼一個完整的內核優化設置:) b3 c& N' O8 A0 ~
net.ipv4.ip_forward = 0
; F% W" ]5 ~- _. [9 F2 H7 Inet.ipv4.conf.default.rp_filter = 1
0 C8 `1 T3 a2 p, u; o4 A* H# ]net.ipv4.conf.default.accept_source_route = 0& q3 r/ T' P: f  }# R. T
kernel.sysrq = 0
+ s2 j$ H3 ~  G. A& D$ Ekernel.core_uses_pid = 1% q+ W3 t" ?$ t
net.ipv4.tcp_syncookies = 11 ~, H9 \9 a' \! a. K  O
kernel.msgmnb = 65536
  z7 t, b; T4 h- rkernel.msgmax = 65536
) P; e0 J# {+ g' r2 L/ \kernel.shmmax = 68719476736- U# s' `8 d% J" r) m/ ^6 Y# w. `6 g
kernel.shmall = 4294967296; b9 f# r7 b. I6 D1 }" a
net.ipv4.tcp_max_tw_buckets = 6000
  B& w& w! X- H& e6 B6 ~* K5 v: Inet.ipv4.tcp_sack = 14 W. T' ]/ U" Z9 E  t  i9 y, Y
net.ipv4.tcp_window_scaling = 17 Y# E. c4 |& ^" G/ `; E& h
net.ipv4.tcp_rmem = 4096 87380 4194304, M; v+ s- G. U% Z9 ^8 P
net.ipv4.tcp_wmem = 4096 16384 4194304/ c* n0 B* Y! T+ @+ \" B& ?- A
net.core.wmem_default = 83886087 K& [6 F, {* j) C  D: s9 `( i( _
net.core.rmem_default = 8388608
! `7 v8 P* J& s, p# D) M. ~9 u% ?net.core.rmem_max = 16777216$ q3 g# T2 @* W' R4 t2 \4 S
net.core.wmem_max = 16777216
3 c" o& N5 [- B/ I1 h- r2 f8 P! mnet.core.netdev_max_backlog = 2621440 I+ g% v6 Y2 ]) M1 @8 @
net.core.somaxconn = 2621444 o' R4 _5 w( h' R
net.ipv4.tcp_max_orphans = 3276800  N- n" n1 ?0 L+ M; A1 r9 N5 r
net.ipv4.tcp_max_syn_backlog = 262144
/ q4 {& ~# W& Y! P/ |net.ipv4.tcp_timestamps = 08 i% c$ q6 D5 R+ A
net.ipv4.tcp_synack_retries = 1" p6 l* w" {) t$ q7 i$ [: P
net.ipv4.tcp_syn_retries = 1
0 o( S7 e- V+ n/ B, q, x/ \# u' H! Snet.ipv4.tcp_tw_recycle = 1
" Q( z8 |- }0 _7 s9 r7 g" J, O+ Rnet.ipv4.tcp_tw_reuse = 1
: ^; c' [0 X0 j4 M6 P. knet.ipv4.tcp_mem = 94500000 915000000 927000000; ?& q5 H( z& u8 g# U3 O+ @
net.ipv4.tcp_fin_timeout = 1
. v& C7 g) K) K; Gnet.ipv4.tcp_keepalive_time = 303 k2 n+ ~" M5 `" q# N6 D) Q" k$ s
net.ipv4.ip_local_port_range = 1024 65000
1 V4 r+ V4 U! B# S( q3 R  o; V/ X4 \# t- A4 N
+ Q; w7 R  E( i3 n! x4 b
下面是一個簡單的 nginx 配置文件:nginx.conf7 y' M- h- f+ E9 O! b
user www www;
% F: R7 z" h/ D* D' i4 ^worker_processes 8;
+ A( n2 X" n% T) f+ y- xworker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;) u% Y* b* C* A% [1 E5 d! F- p
error_log /www/log/nginx_error.log crit;
' O( w$ D: j/ F2 Lpid /usr/local/nginx/nginx.pid;- d, a8 m; @2 P+ ~
worker_rlimit_nofile 204800;1 h2 N& G( h3 \! `1 W" J8 L
events
9 }; {5 F  z7 t, a* B, k{0 z) W4 E: e# l0 l7 y/ l3 Q
  use epoll;* W1 J6 K' t* E( M% X( b# k9 k
  worker_connections 204800;
* g) @1 y. N7 S, U$ q+ K/ X}6 o* s. k- h! Z* G0 |
http$ V! E7 ]0 k6 s
{
, X+ u2 [2 Y1 W7 ?include mime.types;7 b- }, x7 ~1 K1 P
default_type application/octet-stream;# k: B  R. Y& k' L" l
charset utf-8;8 v5 C' E8 M- c  {/ H6 Q; ~# @
server_names_hash_bucket_size 128;
/ a- G1 b# Z' _8 O2 r client_header_buffer_size 2k;
0 R* a+ d% ]4 F# m( Y) Z9 K. S large_client_header_buffers 4 4k;1 S% ?6 `5 }. Y  `* q% W
client_max_body_size 8m;
' v4 Z, V2 S0 e sendfile on;4 m' g9 d4 Q" k% @  |5 j
tcp_nopush on;
. Y' a3 ?3 X! i2 \ keepalive_timeout 60;
2 Z0 U# K* e/ v# c0 M fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
3 v# Q" p, r0 I" W- V0 g6 [/ @4 R fastcgi_connect_timeout 300;# J* m, H* P) Z, r4 V7 p
fastcgi_send_timeout 300;
; J4 O+ _& Y/ S) L* J fastcgi_read_timeout 300;
% \5 ^+ W2 s: t: Z7 `; W fastcgi_buffer_size 16k;
* T! S: o, L# s+ P fastcgi_buffers 16 16k;
" q+ L6 |! y- T0 N2 z fastcgi_busy_buffers_size 16k;
  _) n" V9 ~( h6 D fastcgi_temp_file_write_size 16k;
& h/ k  d+ b* U fastcgi_cache TEST;
/ D! R8 Z7 U# ^4 a fastcgi_cache_valid 200 302 1h;
/ I$ c' S! L  Y4 \  F6 N/ u8 n fastcgi_cache_valid 301 1d;% Z1 `  ]4 F+ \' d6 z
fastcgi_cache_valid any 1m;  z# i2 k4 m6 U
fastcgi_cache_min_uses 1;
; k! Y. S- Q. A$ {- [3 \$ C fastcgi_cache_use_stale error timeout invalid_header http_500;
  D1 R5 z! H" u open_file_cache max=204800 inactive=20s;
3 ]1 B: g+ R' h3 V+ W; Q6 b5 q/ W0 ` open_file_cache_min_uses 1;1 i$ B% t2 X* R0 s0 z
open_file_cache_valid 30s;
* m( n' o6 q5 ^5 E  i$ w' n: C tcp_nodelay on;
) j  ?! l0 @$ Q! L0 [0 J gzip on;
( @1 [  a. B" }/ A, d7 `' t/ K3 k gzip_min_length 1k;
& [: N" d% W7 B4 F gzip_buffers 4 16k;
0 N5 \, \  J& j+ L  ?+ H gzip_http_version 1.0;
" R" ?9 n2 H" B% Q gzip_comp_level 2;
1 P6 y8 Z; [& m- {, A7 u gzip_types text/plain application/x-javascript text/css application/xml;0 r( C. `: _' w6 R' O' h5 z- G
gzip_vary on;
: k$ `( @; ~# ~/ v" z/ ?: B( a server8 R+ G; M# [; I
{; f( i( ]! ^; \1 L; w  n
listen 8080;
) r" y1 V5 P& Y+ h' A9 d+ X$ e  [ server_name backup.aiju.com;, f5 {( I* G  _/ W/ D
index index.php index.htm;6 h3 H4 o8 V! s) `1 S
root /www/html/;
" j' k  J- Y6 b+ B location /status+ U0 Z9 s! A' g, F
{
6 ]6 r5 ]% w) C/ l. k& o% Z* y, p stub_status on;& T9 q4 ^3 j) H
}
2 c* p& v# u+ G. n location ~ .*\.(php|php5)?$
6 |! k0 F+ @5 k# L: i# e/ U {
+ [9 d/ |5 i. v) X fastcgi_pass 127.0.0.1:9000;
) V$ K5 z* A4 P fastcgi_index index.php;
' \; x4 ^$ ?$ y$ R! i include fcgi.conf;
9 h) v5 b; P$ N! v# d# G }" N; s5 v) @; b  `) F) F
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
* E2 ~' [- i% @9 J( K {
2 R6 _$ ?" k1 D1 W, o# } expires 30d;
/ E7 h8 p5 w1 v! @+ V }
, F# l7 b) }: T" i6 A% p log_format access '$remote_addr - $remote_user [$time_local] "$request" '
: J, ~3 P5 R' F, k* C. q '$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';! b+ V0 [% U) D8 m8 T
access_log /www/log/access.log access;
9 I- Y. a6 t+ C' y$ {  ~7 I" m }/ I1 q' D# ?; _$ R
}
- L2 O: J' C4 k. S  M9 F; i- T1 Q8 I1 ]2 d
關於 FastCGI 的幾個指令:
1 w( f, z5 ^/ m) {  x* |* Lfastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
, F  J4 d: g& f$ @3 B: x. G這個指令為 FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。
" l; E6 V- g2 d! Y1 l2 hfastcgi_connect_timeout 300;
9 b' {$ i1 _4 E+ q) R指定連接到後端 FastCGI 的超時時間。' _' q+ z3 z' f3 C
fastcgi_send_timeout 300;) z9 v2 ^7 {3 o  k- h+ U0 H1 w$ I$ `, j
向 FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向 FastCGI 傳送請求的超時時間。
7 N) E- J. x. {) y/ @  {0 ]1 Efastcgi_read_timeout 300;7 V. O% p' w' O1 C
接收 FastCGI 應答的超時時間,這個值是指已經完成兩次握手後接收 FastCGI 應答的超時時間。: M# K7 C- t  M, X8 c
fastcgi_buffer_size 16k;
5 \7 o. @$ p8 ~- A+ b4 C指定讀取 FastCGI 應答第一部分需要用多大的緩衝區,這裡可以設置為 fastcgi_buffers 指令指定的緩衝區大小,上面的
2 S9 D, G" M3 |: T/ J, X( I4 H指令指定它將使用 1 個 16k 的緩衝區去讀取應答的第一部分,即應答頭,其實這個應答頭一般情況下都很小(不會超過
( C# }2 z8 k! b' |5 I- p( D1k),但是你如果在 fastcgi_buffers 指令中指定了緩衝區的大小,那麼它也會分配一個 fastcgi_buffers 指定的緩衝區大
3 z& x4 V7 `8 E1 {" S小去緩存。6 d- f9 X. E/ y" l4 R4 I
fastcgi_buffers 16 16k;
( Z, @1 U, i' j2 ]指定本地需要用多少和多大的緩衝區來緩衝 FastCGI 的應答,如上所示,如果一個 php 腳本所產生的頁面大小為 256k,  \4 D; u% T6 q/ _
則會為其分配 16 個 16k 的緩衝區來緩存,如果大於 256k ,增大於 256k 的部分會緩存到 fastcgi_temp 指定的路徑中,; E, I( ]' U1 N# v3 I6 m- T
當然這對服務器負載來說是不明智的方案,因為內存中處理數據速度要快於硬盤,通常這個值的設置應該選擇一個你的
+ ?* l7 o- t0 O% |9 \4 R8 y, S& z站點中的 php 腳本所產生的頁面大小的中間值,比如你的站點大部分腳本所產生的頁面大小為 256k 就可以把這個值設  ?" \/ T0 Y+ R6 g9 E% a0 x
置為 16 16k,或者 4 64k 或者 64 4k,但很顯然,後兩種並不是好的設置方法,因為如果產生的頁面只有 32k,如果用 4
8 Z1 D2 `# j- {) E0 N1 h64k 它會分配 1 個 64k 的緩衝區去緩存,而如果使用 64 4k 它會分配 8 個 4k 的緩衝區去緩存,而如果使用 16 16k 則它
& j' d# r0 h; Q  D+ z' l2 _會分配 2 個 16k 去緩存頁面,這樣看起來似乎更加合理。
/ Z5 j; q" ^# Q1 Kfastcgi_busy_buffers_size 32k;
6 O$ x; f  p) `, Y這個指令我也不知道是做什麼用,只知道默認值是 fastcgi_buffers 的兩倍。
. S( R/ s5 v4 m( L* Afastcgi_temp_file_write_size 32k;
/ k0 ?3 d% N# v) X在寫入 fastcgi_temp_path 時將用多大的數據塊,默認值是 fastcgi_buffers 的兩倍。: v4 G. Y7 c# Q6 N
fastcgi_cache TEST+ P6 b8 t9 u9 I: u6 d
開啟 FastCGI 緩存並且為其製定一個名稱。個人感覺開啟緩存非常有用,可以有效降低 CPU 負載,並且防止 502 錯誤。
( d5 ^! `  O9 Y4 K0 b但是這個緩存會引起很多問題,因為它緩存的是動態頁面。具體使用還需根據自己的需求。
" c# X' @4 e) |3 @1 tfastcgi_cache_valid 200 302 1h;2 y4 y7 x- b7 |7 G: g( W7 n
fastcgi_cache_valid 301 1d;9 w" U4 J# [6 t. c' l4 X5 w7 H
fastcgi_cache_valid any 1m;
" ~9 r# C+ J" |" j) Q& w$ a為指定的應答代碼指定緩存時間,如上例中將 200,302 應答緩存一小時,301 應答緩存 1 天,其他為 1 分鐘。2 A! K6 p% S" D7 ^
fastcgi_cache_min_uses 1;
/ o9 f; d+ q( `! M: D" {$ v緩存在 fastcgi_cache_path 指令 inactive 參數值時間內的最少使用次數,如上例,如果在 5 分鐘內某文件 1 次也沒有被
( \. G6 m+ u) h) X( V! [: S使用,那麼這個文件將被移除。
* ]" [, f: w$ ]fastcgi_cache_use_stale error timeout invalid_header http_500;1 ^& D! ~6 C% v% m6 ^, O
不知道這個參數的作用,猜想應該是讓 nginx 知道哪些類型的緩存是沒用的。! e) m, V" L7 W: X
以上為 nginx 中 FastCGI 相關參數,另外,FastCGI 自身也有一些配置需要進行優化,如果你使用 php-fpm 來管理3 b  i6 b8 r; k. ^6 j
FastCGI,可以修改配置文件中的以下值:! C' I& u* l+ f4 E( v7 m5 a4 j
<value name="max_children">60</value>( S% Y3 \& \* a0 C
同時處理的並發請求數,即它將開啟最多 60 個子線程來處理並發連接。
& n/ [: m3 Z" A- [. A3 j<value name="rlimit_files">102400</value>
0 x, |! K2 J4 `6 E' c: B最多打開文件數。' i. e' y( |  J; E# _
<value name="max_requests">204800</value>1 \8 E6 m! \2 [8 O, z
每個進程在重置之前能夠執行的最多請求數。. E# X# k' w, J4 `+ c/ z

! t, h# d3 \6 T% h' D8 t: {$ F/ I6 _& @5 P# ~
參考資料:. Z" y7 e' v- D6 R0 f# N# f
http://demo.ckan.org/dataset/daf ... /download/nginx.pdf1 l8 ?; T& M" G9 m
http://blog.chinaunix.net/u3/105004/showart_2087155.html/ ^* U4 f0 N" V0 j9 x( \& }
http://nginx.179401.cn/# V9 K1 D$ L2 y2 l+ r) g
http://blog.s135.com/nginx_php_v5/
; e( \. A" c$ |http://xyz.cinc.biz/2015/09/linux-nginx-php-fpm-connection.html% {2 Y* ]+ R4 D+ s7 g+ |( A
https://www.netroby.com/view/31284 v, M8 H3 \7 }: t! Y! a: |% ~
fastcgi 快取:( k# |/ V4 y% e4 g
https://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/
4 q. C+ s( v  t5 I, k5 X
其他:
! V6 s  U  L  ]1 b4 enginx設定檔內參數的詳細說明: http://nginx.org/en/docs/http/ng ... l#keepalive_timeout
6 X$ X; `# _0 Xnginx優化:http://www.jianshu.com/p/2184654ba4b2
# `  ^6 H" J5 T) ?) Rgzip壓縮功能以減少網路傳輸檔案大小:http://wenzhixin.net.cn/2013/11/10/server_gzip_on8 U. a# y5 Q# l* \3 w- b' j
8 y, ?+ h3 _$ W( h% u6 s4 C1 f  P& W
& j! p, D# `. v* P* X) M$ X- L; D. x
* D$ O2 R- a7 [+ ?/ b& R
' `, N9 U4 N5 W- D" b





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