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

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

作者: IT_man    時間: 2016-10-1 22:08
標題: nginx優化(針對nginx.conf)
以CentOS 之 nginx的設定檔是在 /etc/nginx/nginx.conf
9 r$ P0 `: D8 L* A5 E一般來說 nginx 配置文件中對優化比較有作用的為以下幾項:
4 R2 ~2 {6 Z& o9 f, r$ }- S: nworker_processes 8;6 S" H. ]* E& O. q4 h" [+ c+ e4 Y
nginx 進程數,建議按照 cpu 數目來指定,一般為它的倍數。* [, E8 Z; y3 f8 q# L9 h" a' _$ g
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
' L3 J/ T3 x: a$ ]1 M為每個進程分配 cpu,上例中將 8 個進程分配到 8 個 cpu,當然可以寫多個,或者將一個進程分配到多個 cpu。3 T9 O3 S- ?# }' _9 y
worker_rlimit_nofile 102400;+ K3 L4 z3 P" A. H" x- P
這個指令是指當一個 nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與 nginx 進程數
6 A1 U" ~. P8 m+ O. M- P相除,但是 nginx 分配請求並不是那麼均勻,所以最好與 ulimit -n 的值保持一致。
2 O2 ^# e# I  C  `1 k" |2 duse epoll;
+ J* \) {4 {( p+ f) J  z1 ^使用 epoll 的 I/O 模型,這個不用說了吧。
+ V  n% \( X7 yworker_connections 102400;2 J$ F7 W2 O& V/ L8 u
每個進程允許的最多連接數,理論上每台 nginx 服務器的最大連接數為 worker_processes*worker_connections。2 f* r! O" s! q+ S, N. b' `4 O
keepalive_timeout 60;
* W$ o+ Z4 r5 N1 ?- a, b( \  fkeepalive 超時時間。
2 p! S$ K+ O3 R+ y$ [: c$ Rclient_header_buffer_size 4k;
2 d" h) M: }" P) L客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過 1k,不過由$ R8 S( d$ Q: H! y
於一般系統分頁都要大於 1k,所以這裡設置為分頁大小。分頁大小可以用命令 getconf PAGESIZE 取得。
. p) `0 o- n$ xopen_file_cache max=102400 inactive=20s;. W; X, a! H- g; |6 b
這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時3 i% E9 s4 k- J) z% ^
間文件沒被請求後刪除緩存。# }. k. H+ Q) i% P5 u; X; ^
open_file_cache_valid 30s;; V" h2 F3 L/ l8 I
這個是指多長時間檢查一次緩存的有效信息。
9 ?+ o5 v! [3 G# {open_file_cache_min_uses 1;
" y+ I* p' b3 Oopen_file_cache 指令中的 inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打, C, R; ^/ j: s2 Y" _; D
開的,如上例,如果有一個文件在 inactive 時間內一次沒被使用,它將被移除。
; k5 ?. I- l% z) F: `$ n
% N3 Y0 Z: N8 x( G) S! ]2 B# A( R2 z: C4 _0 G% j5 R% |# i
關於內核參數的優化:
7 r; p7 P4 d& |' \1 T1 Vnet.ipv4.tcp_max_tw_buckets = 60005 H, U$ G) O4 k3 h
timewait 的數量,默認是 180000。$ m8 @1 U9 B9 h: U) d1 F! P
net.ipv4.ip_local_port_range = 1024 65000$ m) g* r. c+ G+ ?, K% ~4 C
允許系統打開的端口範圍。( I1 ?: s! i8 s  p
net.ipv4.tcp_tw_recycle = 11 i0 H0 Q1 S4 K: L+ b+ E
啟用 timewait 快速回收。# P8 d0 u1 z! U7 w& X  C
net.ipv4.tcp_tw_reuse = 1
! R" S$ _* W0 i$ X開啟重用。允許將 TIME-WAIT sockets 重新用於新的 TCP 連接。
: `) B& t" J9 F* v6 unet.ipv4.tcp_syncookies = 1
4 r, [( n0 f5 D8 {+ n開啟 SYN Cookies,當出現 SYN 等待隊列溢出時,啟用 cookies 來處理。' }/ G- a/ i. z: A! B: ?
net.core.somaxconn = 262144! z2 N! z  H0 {6 K! ~
web 應用中 listen 函數的 backlog 默認會給我們內核參數的 net.core.somaxconn 限製到 128,而 nginx 定義的8 o' w) M4 y% `
NGX_LISTEN_BACKLOG 默認為 511,所以有必要調整這個值。
# k9 @( p/ Q/ ?2 Xnet.core.netdev_max_backlog = 2621447 C& A9 i3 o& i
每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。# R% r' I* B4 ]; g8 Q: T
net.ipv4.tcp_max_orphans = 262144
0 v& p9 ]( {& ~  S( E& ?4 r系統中最多有多少個 TCP 套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤兒連接將即刻被復位並打
8 `2 V* p& E" E# Z- P5 z印出警告信息。這個限制僅僅是為了防止簡單的 DoS 攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值
/ q( |' k# l# p! z9 p- ](如果增加了內存之後)。
& k1 _; ~. D) k8 ~- P, A7 Inet.ipv4.tcp_max_syn_backlog = 262144
! I8 q% w; G' b1 U# Q5 k記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對於有 128M 內存的系統而言,缺省值是 1024,小內存的系+ Y! H8 s; L; [( d0 k
統則是 128。$ F% n0 [# ?5 ~4 `* H
net.ipv4.tcp_timestamps = 0" Q9 a8 k% n0 q" ]: j7 q
時間戳可以避免序列號的捲繞。一個 1Gbps 的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的
3 O5 H4 S: x% k* ]; X8 z# s  v# `3 g- x數據包。這裡需要將其關掉。6 |& _  s/ m' A) c4 }
net.ipv4.tcp_synack_retries = 1; H; t; q9 W) ?
為了打開對端的連接,內核需要發送一個 SYN 並附帶一個回應前面一個 SYN 的 ACK。也就是所謂三次握手中的第二次
) R$ b( k! |) l1 v% h: y8 t  a握手。這個設置決定了內核放棄連接之前發送 SYN+ACK 包的數量。* u  w4 I2 V8 m/ b
net.ipv4.tcp_syn_retries = 1
' k! v2 {) d1 Q/ X在內核放棄建立連接之前發送 SYN 包的數量。
+ v0 Q3 D% h# v% x# i4 N; Gnet.ipv4.tcp_fin_timeout = 1
+ @8 _- `, U  K1 ?如果套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間。對端可以出錯並永遠不關閉連接,甚- C7 |3 c6 V2 p+ q
至意外當機。缺省值是 60 秒。2.2 內核的通常值是 180 秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕
& l1 W% X3 Z1 m( p8 O載的 WEB 服務器,也有因為大量的死套接字而內存溢出的風險,FIN- WAIT-2 的危險性比 FIN-WAIT-1 要小,因為它最8 p" \+ m3 e+ h; I+ V7 k  M
多只能吃掉 1.5K 內存,但是它們的生存期長些。
' ?# j" W/ K# B$ m# B" Hnet.ipv4.tcp_keepalive_time = 30
8 k' d( R6 Y1 V4 q' R4 L' n' R當 keepalive 起用的時候,TCP 發送 keepalive 消息的頻度。缺省是 2 小時。
$ Z: b0 s) E2 n3 ^+ W
9 y; N$ x1 P4 T+ Z
) T1 T3 y% |( U& {1 G  c3 F8 g下面貼一個完整的內核優化設置:
: h2 v4 @2 w2 r- s9 r8 vnet.ipv4.ip_forward = 0
! i  j1 I  s0 W8 _* d- d3 Mnet.ipv4.conf.default.rp_filter = 1
% s0 j  ]4 j* ], K9 X8 _- P! Gnet.ipv4.conf.default.accept_source_route = 0: P0 L  _. a7 s5 S' A
kernel.sysrq = 0- O" q4 |6 A0 F& J- m: Z
kernel.core_uses_pid = 1! T( D7 L5 g' E6 M9 W% E, b4 A
net.ipv4.tcp_syncookies = 1
% r0 k0 `7 D6 Y  rkernel.msgmnb = 65536$ x4 x4 G5 U9 K  q2 ~) f
kernel.msgmax = 655362 w" L0 Q5 G1 r' G$ \( v0 |% U
kernel.shmmax = 68719476736
2 r/ p: p/ X$ {7 b% o- U/ Ekernel.shmall = 4294967296
$ u$ o: F+ A% @! n4 w: qnet.ipv4.tcp_max_tw_buckets = 6000
- w/ k6 r" ~, G8 B4 r2 Ynet.ipv4.tcp_sack = 1
1 \& Z, K1 Y4 ~9 h$ ^* W! H# Hnet.ipv4.tcp_window_scaling = 1$ `, ^0 l% n; \7 E2 I; A
net.ipv4.tcp_rmem = 4096 87380 41943046 d6 H1 X/ B0 o9 o: e( t3 l
net.ipv4.tcp_wmem = 4096 16384 4194304; Y' a8 R; h7 `" A: T
net.core.wmem_default = 83886082 R! _! a4 v5 f, R
net.core.rmem_default = 8388608
% _5 m6 @6 Y! W4 J, Knet.core.rmem_max = 16777216
, @& d. K7 ^- c& p3 fnet.core.wmem_max = 167772161 e/ f/ I# ^2 S
net.core.netdev_max_backlog = 262144
' Y# H4 \$ e7 n! {net.core.somaxconn = 2621440 A  j6 c$ J) l9 Y) n1 l2 ~7 R
net.ipv4.tcp_max_orphans = 3276800
! a4 `8 M+ P2 ]) Onet.ipv4.tcp_max_syn_backlog = 262144
0 ^; G2 f1 {) r4 _: }/ d' {- D5 {7 e: Anet.ipv4.tcp_timestamps = 0" X7 i  g3 a0 m: @
net.ipv4.tcp_synack_retries = 1: g! V- w( i" Y
net.ipv4.tcp_syn_retries = 12 Z6 c% v& H2 f& F9 B# @2 M
net.ipv4.tcp_tw_recycle = 1
; R& U4 ?* B, d# ?' X5 hnet.ipv4.tcp_tw_reuse = 1
  g4 D. K- e+ G" y" S6 M5 Y- z0 ^net.ipv4.tcp_mem = 94500000 915000000 927000000$ F9 y) G) G- ~0 O6 }: g1 w; s
net.ipv4.tcp_fin_timeout = 10 Y. ~; C! J/ ?$ m* |$ J, d0 j
net.ipv4.tcp_keepalive_time = 301 @% N) F. }3 h, m
net.ipv4.ip_local_port_range = 1024 65000; _4 n* e, ]" F9 b# f  U% q7 h7 V

. d  J. ^/ J5 M0 K- `: a/ T" q. F8 a
下面是一個簡單的 nginx 配置文件:nginx.conf
/ s( c% k4 H$ Z, Z  Z3 h% Iuser www www;
# K3 b2 g% s. d# i+ |worker_processes 8;% [/ r) z5 ?- I% w" g# Z. A' b: x; ]
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;# O+ I; C4 o4 H
error_log /www/log/nginx_error.log crit;
3 r) @( O' ]4 apid /usr/local/nginx/nginx.pid;2 X& k* |. A4 t- w( p7 s
worker_rlimit_nofile 204800;6 u; v1 H- L& }) o) k
events
; q+ \. j) F  o% g; B{
% Y0 W, z, A. P. R8 b* `3 i/ h  use epoll;
. U) L: o' ^" _8 f  worker_connections 204800;
1 y7 S' I6 K/ g# z: U5 S% v2 A' x}
% J. o% f* v; X* O' x* lhttp
8 U; L' h* n; `9 U) a3 `, _{
+ }) }- D+ ^" s  y4 Linclude mime.types;
% [2 e8 Z7 A% ~. l# K default_type application/octet-stream;4 h0 x* W# S; Y& F7 b
charset utf-8;9 I, e2 ^9 v: R8 }
server_names_hash_bucket_size 128;1 _8 a+ c% k4 D) M+ V
client_header_buffer_size 2k;
/ g* n, N* M8 [3 H large_client_header_buffers 4 4k;- U1 V* a9 a5 r1 D" _
client_max_body_size 8m;) Q! h, E* {' T
sendfile on;: ]: Q; F8 Q& g; q2 u9 N/ ?
tcp_nopush on;
. I9 J' f- C4 `* m7 Y7 n+ F* E keepalive_timeout 60;' U; h  Q' L# S. i' n- r
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
0 b/ L% I! P/ O; j; f& j& e* K% o fastcgi_connect_timeout 300;& l0 l  s6 k, r
fastcgi_send_timeout 300;
$ a! F, j9 E2 E fastcgi_read_timeout 300;
& D, H) Q) A; v& r. p! N2 u fastcgi_buffer_size 16k;* k$ v. t0 i5 g6 L2 ]# E' J  B
fastcgi_buffers 16 16k;( ~3 {4 M5 h9 c4 S
fastcgi_busy_buffers_size 16k;
/ N0 e0 D. v6 S  K, C fastcgi_temp_file_write_size 16k;; T7 P& H6 z, x3 _4 ]6 I4 S4 s: _
fastcgi_cache TEST;6 \9 y+ U" u% I: l
fastcgi_cache_valid 200 302 1h;
2 o9 {$ D  [3 t5 {# n' j- Q fastcgi_cache_valid 301 1d;/ |9 X0 `% I9 p/ a5 [
fastcgi_cache_valid any 1m;
& ^, }3 T& d( W4 V fastcgi_cache_min_uses 1;0 c: D5 R8 n+ `" d9 X# B
fastcgi_cache_use_stale error timeout invalid_header http_500;, H& e+ ?; n, p2 K! S% G( p
open_file_cache max=204800 inactive=20s;  n* m) G/ b1 y4 V/ w) V3 V
open_file_cache_min_uses 1;
# V; Q2 o* {) Q* e$ V) n5 z open_file_cache_valid 30s;
  h: @, v& B* y5 T2 J7 R5 \* O! T tcp_nodelay on;
: }! L3 h0 Q( k- o5 ~ gzip on;) p+ H( j, b9 Y& B" F! @
gzip_min_length 1k;( U4 E7 ~; }* X7 w2 |
gzip_buffers 4 16k;1 ^& C$ x+ }% Z
gzip_http_version 1.0;$ {# \7 t* X; f3 T" [) k6 T' X
gzip_comp_level 2;
3 Y* A* W4 k; c0 E gzip_types text/plain application/x-javascript text/css application/xml;, \9 o+ a3 r$ I2 I' U* L/ Z4 m
gzip_vary on;5 f0 N5 l" p' K. w) ~$ X
server6 n0 x& x* P# p; x8 {8 k1 e
{
" z4 m8 u" H2 y! e- h8 j listen 8080;# _; M: A9 Y' ]" E! }7 w
server_name backup.aiju.com;; D$ |. W" Y& ^" K$ a* b7 Y8 A
index index.php index.htm;( X( I/ G8 f6 ]( ^2 d* N$ Y8 a; ?
root /www/html/;
2 q' ^: j% c, A1 ?+ ?+ C& b location /status
/ u0 `+ f$ T1 ~/ |! S" u {6 j3 u$ I3 p4 H; j7 H! e0 X
stub_status on;; x" r2 P  _' @0 N" ]
}
# T5 ~) K* |8 [7 I: X location ~ .*\.(php|php5)?$1 a* i# g" J9 b5 |6 E  N1 P$ o/ m
{
8 D( b! o* [9 @# y% P fastcgi_pass 127.0.0.1:9000;' H1 q' k* R9 }
fastcgi_index index.php;
7 b; m$ @7 I5 Q$ a, Y+ B5 O include fcgi.conf;
5 _* N/ M0 w# b- M" [1 _: ] }
; j) m: z* n) v: q& L- I location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$& F; t0 w, z& N3 a7 @3 K
{
, j5 p" q# D, g  H* C3 r, S expires 30d;
5 p0 g: T! E  }% B0 w }# K" J- E6 _, S/ l- U3 n7 ]1 s
log_format access '$remote_addr - $remote_user [$time_local] "$request" '' O1 B' ~* u* F1 t0 J. q
'$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';; L6 t) Z5 W3 P
access_log /www/log/access.log access;+ s" |/ ^4 o* H$ D0 p3 I5 q. X$ k
}
* m; @* R/ E0 E# h}8 W( z! i2 _0 f) E4 i; ~
5 \. A/ R# i( v. t
關於 FastCGI 的幾個指令:2 U4 L! s  ^5 T8 t
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
8 m5 l" U* l9 _9 {這個指令為 FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。
8 p" e( t# b0 O+ F: ?; gfastcgi_connect_timeout 300;
; T! y4 g: o1 W2 S% r8 e$ q' V指定連接到後端 FastCGI 的超時時間。1 t: {; t: W4 F9 t7 `# U  S4 p
fastcgi_send_timeout 300;* L. S% X, g: |. _: E' P% q
向 FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向 FastCGI 傳送請求的超時時間。
; D+ b5 I' Z$ q5 K' Ofastcgi_read_timeout 300;5 c9 b& V9 U5 |* S
接收 FastCGI 應答的超時時間,這個值是指已經完成兩次握手後接收 FastCGI 應答的超時時間。. Y  I" |# c1 T
fastcgi_buffer_size 16k;% \2 E% F4 p8 \- m0 S* d" I
指定讀取 FastCGI 應答第一部分需要用多大的緩衝區,這裡可以設置為 fastcgi_buffers 指令指定的緩衝區大小,上面的
/ j, {2 s: c' B6 J3 T5 h8 [$ e指令指定它將使用 1 個 16k 的緩衝區去讀取應答的第一部分,即應答頭,其實這個應答頭一般情況下都很小(不會超過
, U3 ~8 v% |; x4 p. ?1k),但是你如果在 fastcgi_buffers 指令中指定了緩衝區的大小,那麼它也會分配一個 fastcgi_buffers 指定的緩衝區大
5 d4 w: V1 J4 Q4 \% r  U$ L小去緩存。
) K$ L" M) w: k& E9 r* kfastcgi_buffers 16 16k;; a2 Q. q1 C& L8 U
指定本地需要用多少和多大的緩衝區來緩衝 FastCGI 的應答,如上所示,如果一個 php 腳本所產生的頁面大小為 256k,
$ z2 }0 a& ~5 _% K5 ^則會為其分配 16 個 16k 的緩衝區來緩存,如果大於 256k ,增大於 256k 的部分會緩存到 fastcgi_temp 指定的路徑中,$ A, S* X  z' W5 |
當然這對服務器負載來說是不明智的方案,因為內存中處理數據速度要快於硬盤,通常這個值的設置應該選擇一個你的, P5 k7 u, g3 |
站點中的 php 腳本所產生的頁面大小的中間值,比如你的站點大部分腳本所產生的頁面大小為 256k 就可以把這個值設
5 ]; J7 t0 O& ~置為 16 16k,或者 4 64k 或者 64 4k,但很顯然,後兩種並不是好的設置方法,因為如果產生的頁面只有 32k,如果用 4  H8 L6 N, W2 m4 ^) z
64k 它會分配 1 個 64k 的緩衝區去緩存,而如果使用 64 4k 它會分配 8 個 4k 的緩衝區去緩存,而如果使用 16 16k 則它* I: t, z3 j: P
會分配 2 個 16k 去緩存頁面,這樣看起來似乎更加合理。" n( W. a* `; b, D3 i3 }: {7 A
fastcgi_busy_buffers_size 32k;
( K: }0 v) l: e/ d# X: T這個指令我也不知道是做什麼用,只知道默認值是 fastcgi_buffers 的兩倍。( F- e$ w# s. U9 V( S
fastcgi_temp_file_write_size 32k;
2 g7 }0 J3 I& _+ g5 w在寫入 fastcgi_temp_path 時將用多大的數據塊,默認值是 fastcgi_buffers 的兩倍。
. W" T% m3 g' m% u5 s, \fastcgi_cache TEST6 X0 W' @/ @4 j7 B
開啟 FastCGI 緩存並且為其製定一個名稱。個人感覺開啟緩存非常有用,可以有效降低 CPU 負載,並且防止 502 錯誤。2 @3 ]! ~1 l9 i1 A9 v
但是這個緩存會引起很多問題,因為它緩存的是動態頁面。具體使用還需根據自己的需求。! K9 \9 t. j# u
fastcgi_cache_valid 200 302 1h;
2 G5 Q4 b3 z& q2 xfastcgi_cache_valid 301 1d;
' V1 H3 z+ G6 T7 R  D1 efastcgi_cache_valid any 1m;
! J( F, m- b" w$ M+ `: x為指定的應答代碼指定緩存時間,如上例中將 200,302 應答緩存一小時,301 應答緩存 1 天,其他為 1 分鐘。. N) e# Y; j* v5 ^$ M+ ]
fastcgi_cache_min_uses 1;
  K. `# T0 N4 c6 O$ j: N! Y緩存在 fastcgi_cache_path 指令 inactive 參數值時間內的最少使用次數,如上例,如果在 5 分鐘內某文件 1 次也沒有被; I2 y1 _, v( k) M% _
使用,那麼這個文件將被移除。
& K: p7 t( a* F" H  {fastcgi_cache_use_stale error timeout invalid_header http_500;6 ~7 }+ ]# M7 F8 N; n- ^
不知道這個參數的作用,猜想應該是讓 nginx 知道哪些類型的緩存是沒用的。
1 {, g7 @" Y9 M' O; O9 j+ r1 R以上為 nginx 中 FastCGI 相關參數,另外,FastCGI 自身也有一些配置需要進行優化,如果你使用 php-fpm 來管理* x  \$ h! }$ x
FastCGI,可以修改配置文件中的以下值:
* U$ P% X( P* p% s<value name="max_children">60</value>8 {( E! ~' X5 w; t0 l9 E
同時處理的並發請求數,即它將開啟最多 60 個子線程來處理並發連接。
3 f: }# x4 d0 B/ K/ x2 }4 o# x<value name="rlimit_files">102400</value>! u1 E- z+ x8 j4 M4 W
最多打開文件數。/ [6 g# b! r# v! q$ w4 b/ c: |
<value name="max_requests">204800</value>- m& A. P/ P, X( G% T( h
每個進程在重置之前能夠執行的最多請求數。
4 i/ o6 r, P* K7 G, z
$ t# H1 a- W& l& T9 ~5 Y1 ]" a- q# g6 w8 Y3 K
參考資料:, I9 }* M$ [' {& {" y1 p
http://demo.ckan.org/dataset/daf ... /download/nginx.pdf+ |' T! U( i0 l! X& m! Z
http://blog.chinaunix.net/u3/105004/showart_2087155.html% ?7 l, y% y& N, j8 u% i
http://nginx.179401.cn/! W# L/ j' P+ Y6 A
http://blog.s135.com/nginx_php_v5/
& m% v, O' b0 Uhttp://xyz.cinc.biz/2015/09/linux-nginx-php-fpm-connection.html
1 `- X; ?$ T, X% o! vhttps://www.netroby.com/view/31281 w" K5 s" ~, A
fastcgi 快取:5 A. ?! P3 N8 i7 V# U) d( Z
https://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/: ?7 @3 z  b! S- i  [& j
其他:
( L( K5 y9 |) p0 m, Knginx設定檔內參數的詳細說明: http://nginx.org/en/docs/http/ng ... l#keepalive_timeout, H2 B$ d- j# f& h/ {* m
nginx優化:http://www.jianshu.com/p/2184654ba4b2
8 H" m$ K8 x5 K& t- p1 k  ugzip壓縮功能以減少網路傳輸檔案大小:http://wenzhixin.net.cn/2013/11/10/server_gzip_on( n7 N( R$ f2 l
/ h# ]0 A$ ^2 [2 n( S+ H

& ]" R- X. Q- z9 ]* o$ F
& y% X- g  G/ t, e# r
9 B' J8 @8 c) g; A; o/ M




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