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

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

作者: IT_man    時間: 2016-10-1 22:08
標題: nginx優化(針對nginx.conf)
以CentOS 之 nginx的設定檔是在 /etc/nginx/nginx.conf
/ [. {; r8 `2 D; _  |; v一般來說 nginx 配置文件中對優化比較有作用的為以下幾項:
) |6 _- D, l6 L7 f. ^worker_processes 8;$ j) O6 e: a8 |& L
nginx 進程數,建議按照 cpu 數目來指定,一般為它的倍數。4 h& d3 Q8 v2 n. f+ ~6 Q
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;; A! P; K* {" A& z$ ]% C
為每個進程分配 cpu,上例中將 8 個進程分配到 8 個 cpu,當然可以寫多個,或者將一個進程分配到多個 cpu。, m) m/ Y5 A" b* [& `
worker_rlimit_nofile 102400;
- f% g7 ~7 @* W5 F. v8 E5 ^這個指令是指當一個 nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與 nginx 進程數
$ j$ {) M7 h. \8 w& l相除,但是 nginx 分配請求並不是那麼均勻,所以最好與 ulimit -n 的值保持一致。
5 @$ z7 V7 [! C( n3 ~% t9 d; Ause epoll;
% g! Z6 m- A: E- ~& z. w使用 epoll 的 I/O 模型,這個不用說了吧。
+ I$ q# D5 m% p, [8 q7 Sworker_connections 102400;
$ ^7 ?( L  Q& i0 a) W/ \每個進程允許的最多連接數,理論上每台 nginx 服務器的最大連接數為 worker_processes*worker_connections。% r+ L4 M' x# p( [+ n- f
keepalive_timeout 60;
! c2 Q- j$ x, m1 p2 c) z3 Qkeepalive 超時時間。' z6 _3 l4 |/ E$ Q+ G  M" C1 c
client_header_buffer_size 4k;
5 M5 ~6 E; @6 t9 I5 l客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過 1k,不過由
& q9 K4 L+ a; Y1 f於一般系統分頁都要大於 1k,所以這裡設置為分頁大小。分頁大小可以用命令 getconf PAGESIZE 取得。
; W1 F: {) H! ?2 r: d9 a7 S% e. sopen_file_cache max=102400 inactive=20s;
6 q) l# E& @1 x這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時
: Z0 ]9 Y# `& S間文件沒被請求後刪除緩存。
9 i& i0 ?  n' K5 C3 [1 qopen_file_cache_valid 30s;9 v! q' U  H  u
這個是指多長時間檢查一次緩存的有效信息。
/ Q3 t! X* k, W) c2 Popen_file_cache_min_uses 1;
0 q8 G7 R/ n" K+ u" e8 `open_file_cache 指令中的 inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打# c) S; l% f$ r& ~
開的,如上例,如果有一個文件在 inactive 時間內一次沒被使用,它將被移除。
* I) l- D5 r. M7 r% Q& K
' n1 c% m7 }$ o- j& T$ M# u5 ~9 z$ x3 H" u2 F& |
關於內核參數的優化:
: u: l' D: }: `# h9 x9 {net.ipv4.tcp_max_tw_buckets = 6000$ H" k& V/ M# o$ o% f  |
timewait 的數量,默認是 180000。
7 \+ U- S( H. n1 F) tnet.ipv4.ip_local_port_range = 1024 65000& z: `2 ?) x7 [
允許系統打開的端口範圍。
* z4 |8 V8 p; f2 B) I5 X6 l3 ?net.ipv4.tcp_tw_recycle = 1
0 ^9 V8 P4 x# C% _8 M" v. o; A! O* F啟用 timewait 快速回收。
/ z8 v( {! O2 q( P- wnet.ipv4.tcp_tw_reuse = 16 C* @- B1 h4 n, h- r# C
開啟重用。允許將 TIME-WAIT sockets 重新用於新的 TCP 連接。; y- D; j# A- ~5 P
net.ipv4.tcp_syncookies = 1
% A3 }7 v2 L% p8 \9 S/ \開啟 SYN Cookies,當出現 SYN 等待隊列溢出時,啟用 cookies 來處理。
! ]3 H! H* ?8 m/ l! |! {net.core.somaxconn = 262144! P( @; k6 ^9 a
web 應用中 listen 函數的 backlog 默認會給我們內核參數的 net.core.somaxconn 限製到 128,而 nginx 定義的8 \, i; G/ E3 z/ u- s
NGX_LISTEN_BACKLOG 默認為 511,所以有必要調整這個值。
; v; u7 U9 M# \% knet.core.netdev_max_backlog = 262144
* [) q$ l. k4 G+ n2 C0 u; N每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。$ s) O7 W" [8 b4 q6 V
net.ipv4.tcp_max_orphans = 2621444 q6 G' F+ b, ]: M# }
系統中最多有多少個 TCP 套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤兒連接將即刻被復位並打
2 O1 W6 o6 }3 r印出警告信息。這個限制僅僅是為了防止簡單的 DoS 攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值
' F2 k; O& m" o5 a3 G1 @0 [* r4 ^4 S(如果增加了內存之後)。) v% F/ t  J' m$ W/ ^0 O/ T* N
net.ipv4.tcp_max_syn_backlog = 2621443 P! E% E& D' p( n# D1 V8 x
記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對於有 128M 內存的系統而言,缺省值是 1024,小內存的系6 _" _' D# N" C7 W- v* C1 B3 |  g
統則是 128。' w8 @1 e: U$ D" ~% d
net.ipv4.tcp_timestamps = 0( q) M5 ]  d2 t9 n( ~
時間戳可以避免序列號的捲繞。一個 1Gbps 的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的0 |7 W, m  [$ x9 Y
數據包。這裡需要將其關掉。
, y' \# i  |  |2 _8 W; |net.ipv4.tcp_synack_retries = 1: Z9 b6 q" ~8 y4 U  z
為了打開對端的連接,內核需要發送一個 SYN 並附帶一個回應前面一個 SYN 的 ACK。也就是所謂三次握手中的第二次% A- C6 w- A  e
握手。這個設置決定了內核放棄連接之前發送 SYN+ACK 包的數量。
$ z# u7 W8 ^, c7 E1 @net.ipv4.tcp_syn_retries = 1
( h. P7 h- J  N- H& W在內核放棄建立連接之前發送 SYN 包的數量。
( d  s2 c7 O4 x, x0 V  |2 Wnet.ipv4.tcp_fin_timeout = 1
. ^+ _) |6 [/ s: z8 r如果套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間。對端可以出錯並永遠不關閉連接,甚
* `% N  h3 J3 X# a8 s至意外當機。缺省值是 60 秒。2.2 內核的通常值是 180 秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕" g7 A! H& ~8 \
載的 WEB 服務器,也有因為大量的死套接字而內存溢出的風險,FIN- WAIT-2 的危險性比 FIN-WAIT-1 要小,因為它最
) ^+ O+ H' w! C! z$ x多只能吃掉 1.5K 內存,但是它們的生存期長些。+ n7 B3 c1 X2 A! R4 T/ H: l
net.ipv4.tcp_keepalive_time = 305 e8 o* r8 j2 \( q4 t8 E5 h
當 keepalive 起用的時候,TCP 發送 keepalive 消息的頻度。缺省是 2 小時。" @$ }1 ~* x" ]( O3 w# c

9 Z% F# @7 C! t  R1 |; V7 v6 E" Y
下面貼一個完整的內核優化設置:" r" J5 q& B! a, u% }: B
net.ipv4.ip_forward = 0
% i& b: n1 @% @& e" x" h- J; J; j: |net.ipv4.conf.default.rp_filter = 10 j3 R1 j3 s( Y
net.ipv4.conf.default.accept_source_route = 0
. Y/ a8 O, i$ r, z5 Hkernel.sysrq = 0, l. c3 E* i% B1 Q5 ?
kernel.core_uses_pid = 15 S+ ]7 f  V* q/ \6 H
net.ipv4.tcp_syncookies = 1
1 P, c. M5 I% v8 @1 Ykernel.msgmnb = 65536# u: v" p& U& A1 O8 j
kernel.msgmax = 655367 |6 c, O6 E3 F  [- X6 ~
kernel.shmmax = 68719476736
7 G% S6 {/ n: ~0 J, c" n: }" u8 K' z2 Pkernel.shmall = 4294967296
0 T' A; n& r( @5 U1 onet.ipv4.tcp_max_tw_buckets = 6000
% ?( M% l* R- T! \3 ?2 R( Ynet.ipv4.tcp_sack = 18 ]8 y) w/ w, s9 t! [1 U8 T
net.ipv4.tcp_window_scaling = 1
3 B" [; z- z) t9 }( dnet.ipv4.tcp_rmem = 4096 87380 4194304
7 w( M: W6 `' l4 e8 S# Knet.ipv4.tcp_wmem = 4096 16384 41943047 r" U1 t( ]1 p* d2 L
net.core.wmem_default = 8388608* l4 C: K. C: @  V1 d" Q# l
net.core.rmem_default = 8388608- b# f/ W$ e* U5 q1 l% [
net.core.rmem_max = 16777216
4 ~, L! V1 D( O* @! \' Gnet.core.wmem_max = 16777216
+ K2 u9 x. o9 o0 F5 i& W. o- o! E. nnet.core.netdev_max_backlog = 2621443 H! ]+ ?* Q/ A1 t
net.core.somaxconn = 262144
# U' ]' d0 Z( d/ X& _, T% d) o3 E  wnet.ipv4.tcp_max_orphans = 3276800, D, o) q9 P. f. C6 w
net.ipv4.tcp_max_syn_backlog = 262144
0 r  @( {8 t( q( j. B& qnet.ipv4.tcp_timestamps = 0* y( z! I/ v* G% r# k
net.ipv4.tcp_synack_retries = 1
( L+ y, F7 C* Vnet.ipv4.tcp_syn_retries = 1
4 G, K" c$ D6 u; Pnet.ipv4.tcp_tw_recycle = 1
( F0 a+ _9 o3 i# r0 tnet.ipv4.tcp_tw_reuse = 1  f  O: d' Q& `8 J1 E" A; M5 w
net.ipv4.tcp_mem = 94500000 915000000 9270000008 ~4 d. w2 ^9 t) n+ N) O
net.ipv4.tcp_fin_timeout = 1: y$ R- F, Y8 c) {
net.ipv4.tcp_keepalive_time = 30/ Y  |3 {2 _: ]; Z
net.ipv4.ip_local_port_range = 1024 650009 M9 R/ G4 A, j8 U! ~

" @- j$ u* z  K0 w) H/ _% F! s# k2 b8 _
下面是一個簡單的 nginx 配置文件:nginx.conf
. K( _, }: ?8 h3 _user www www;
2 w0 x* k# x+ o. Mworker_processes 8;
# r+ w" `- h! X% U0 A, aworker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;' M( X$ \, m1 B  {8 M
error_log /www/log/nginx_error.log crit;
6 a" p, L+ P: W. f0 s, fpid /usr/local/nginx/nginx.pid;
  |" N+ x: M; N, p- Zworker_rlimit_nofile 204800;
" U" y2 d4 A: z2 Kevents4 ~6 @- q7 [* k% d( Y
{  T; Y% E6 _. K5 v$ @! _' {+ v( W
  use epoll;4 d8 @- m7 `- V" p. d# F
  worker_connections 204800;
% e1 e" F) b) e- l}1 I' Q4 ^9 w' v. }
http* R* N, K5 Q0 w3 i3 Y
{, O" ~* B7 O/ c# l: y9 A; p3 T4 Q4 y6 s
include mime.types;9 |& `. E$ q) k% E
default_type application/octet-stream;
. w9 Q7 R! T; I; V' E charset utf-8;+ n/ f: @4 }$ P6 r+ d5 U2 z
server_names_hash_bucket_size 128;
9 |3 ?3 O0 z' ^; k) ^1 S  ~ client_header_buffer_size 2k;
5 }* L: D" _- M0 O% T- \ large_client_header_buffers 4 4k;
  s( B$ \& t) _( G5 g9 ^3 V% G client_max_body_size 8m;
, y0 s9 `3 n0 i0 m sendfile on;
9 m# W! b' j7 ~% D; f tcp_nopush on;8 e. ?9 O+ {1 T' @& {. I( g
keepalive_timeout 60;' q+ R) p* a: r2 s9 X# b8 J
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
+ G$ Y9 e) y% ^% t, ?" m8 E fastcgi_connect_timeout 300;
/ T- Y$ V4 N: `3 ~5 C4 q) R fastcgi_send_timeout 300;
- x; R% T% a* z* A; U$ u fastcgi_read_timeout 300;
( N* Q+ `1 M  t( D5 _ fastcgi_buffer_size 16k;
2 t9 X8 }% D. ^4 k! A2 R fastcgi_buffers 16 16k;7 G1 @& R% c6 c
fastcgi_busy_buffers_size 16k;
( E/ F5 G, @, i7 O& ] fastcgi_temp_file_write_size 16k;
8 ]7 [0 q) p9 ]  x: \4 V fastcgi_cache TEST;1 {7 e& F  V5 d# a. g
fastcgi_cache_valid 200 302 1h;
' t" Z7 e8 C8 l8 B0 x4 H fastcgi_cache_valid 301 1d;
. G5 g: n# Q& C, _- e fastcgi_cache_valid any 1m;
" S/ w4 i5 t# H2 v fastcgi_cache_min_uses 1;% D* n! }8 N6 k
fastcgi_cache_use_stale error timeout invalid_header http_500;( g7 B) v2 C' S' w% G$ {. F
open_file_cache max=204800 inactive=20s;: e0 G  n! @) o* N
open_file_cache_min_uses 1;9 X8 y1 _# f& \% {; `( A
open_file_cache_valid 30s;9 A" G2 }% h5 d& t8 ]' S
tcp_nodelay on;
0 I  U) ]* a8 l- T+ N' O gzip on;
0 G& c/ ?: N" ~: | gzip_min_length 1k;8 ~+ u; W( H" M" ^
gzip_buffers 4 16k;/ I8 }7 J  W0 c2 {: s" H! U
gzip_http_version 1.0;
  n, u/ A% Q; }, K; M gzip_comp_level 2;8 ?. O/ A8 h% ~% u
gzip_types text/plain application/x-javascript text/css application/xml;+ I7 B$ P) q- i& @
gzip_vary on;
+ Y5 r5 @, M1 d+ I: f% b server
, x. N, L9 k9 P; ?* _8 a- y. R5 X {
) a( v2 G- ]# C. y0 `2 J4 A& w: j) s listen 8080;
% t) |6 @! {0 [6 q1 _: L server_name backup.aiju.com;
! {% ~- x& Z2 p3 d! | index index.php index.htm;: K7 T9 j' L/ o, j1 r
root /www/html/;
: R- [0 k! V" S) E: \ location /status
2 e6 Q+ W2 ~& S9 u" | {/ c/ o( M# F- U* t0 Z0 z
stub_status on;
6 g" C* e( ~; P& E, g }6 p8 p# u/ U) i7 ^
location ~ .*\.(php|php5)?$/ m- o! k3 c, H  G
{
5 A, g+ j# Q+ e, \- Y6 ^+ T fastcgi_pass 127.0.0.1:9000;
; M2 V8 P/ h( h8 M/ r' E fastcgi_index index.php;" d# R( P2 T8 L# U& ~
include fcgi.conf;- D4 Y* D1 m7 s5 a) T9 b
}2 b# k- u) W% Q- x
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$  @+ g* P  f1 P; g' i; t/ c. c
{
: x, l! S7 @4 n) F5 B( } expires 30d;
# d0 u8 w- H1 \# |& E+ B. | }
# h; T" [% t# H2 t' w! [ log_format access '$remote_addr - $remote_user [$time_local] "$request" '
8 _6 {' I$ [/ q& x '$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';) d' v5 \& r* `3 _) b
access_log /www/log/access.log access;
4 ^# i5 Y  Z2 z+ v5 @ }9 F6 l5 `, h5 m  E
}3 U; R' s5 h) G( P' ~8 r& \) @+ R

, s4 u# y( r' \# y. i關於 FastCGI 的幾個指令:" x) D. s: x9 U+ s2 D6 a9 {
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
( T6 F) d" j$ s* e- N這個指令為 FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。2 U0 o+ |# M! J$ w+ \; ?3 r3 Q
fastcgi_connect_timeout 300;% J! p  K: a) }% T4 {9 v: L
指定連接到後端 FastCGI 的超時時間。: \* }6 n0 Y, ~: g8 J
fastcgi_send_timeout 300;1 w: q1 ~' D/ ^
向 FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向 FastCGI 傳送請求的超時時間。4 _, h! m5 s0 W" M/ _
fastcgi_read_timeout 300;* p7 M+ U/ ?% t1 P5 }: Q( p, {
接收 FastCGI 應答的超時時間,這個值是指已經完成兩次握手後接收 FastCGI 應答的超時時間。
7 ?8 N& r$ Z1 C' H5 I5 J, \fastcgi_buffer_size 16k;( n; Z8 z' |# b
指定讀取 FastCGI 應答第一部分需要用多大的緩衝區,這裡可以設置為 fastcgi_buffers 指令指定的緩衝區大小,上面的! A: @  ^8 c, o3 U3 o% ~9 I) H+ {
指令指定它將使用 1 個 16k 的緩衝區去讀取應答的第一部分,即應答頭,其實這個應答頭一般情況下都很小(不會超過2 T3 {2 V0 F& H: B6 T' F- ?
1k),但是你如果在 fastcgi_buffers 指令中指定了緩衝區的大小,那麼它也會分配一個 fastcgi_buffers 指定的緩衝區大+ V* G: \* k' J* k. D8 v1 R
小去緩存。  @7 I1 L: b: I  H7 u
fastcgi_buffers 16 16k;
" |) ?2 ?1 J% |' o指定本地需要用多少和多大的緩衝區來緩衝 FastCGI 的應答,如上所示,如果一個 php 腳本所產生的頁面大小為 256k,5 S4 x' K: _* p$ o( j
則會為其分配 16 個 16k 的緩衝區來緩存,如果大於 256k ,增大於 256k 的部分會緩存到 fastcgi_temp 指定的路徑中,6 T1 o, E) B; Y, E1 D% Z
當然這對服務器負載來說是不明智的方案,因為內存中處理數據速度要快於硬盤,通常這個值的設置應該選擇一個你的
7 l/ h* X4 v9 x+ T% \站點中的 php 腳本所產生的頁面大小的中間值,比如你的站點大部分腳本所產生的頁面大小為 256k 就可以把這個值設
- I8 K( J1 v, @置為 16 16k,或者 4 64k 或者 64 4k,但很顯然,後兩種並不是好的設置方法,因為如果產生的頁面只有 32k,如果用 44 p5 n, l6 [( ^2 g
64k 它會分配 1 個 64k 的緩衝區去緩存,而如果使用 64 4k 它會分配 8 個 4k 的緩衝區去緩存,而如果使用 16 16k 則它
1 L/ ]  o6 B  w4 O, _會分配 2 個 16k 去緩存頁面,這樣看起來似乎更加合理。
2 Y9 j4 y7 m& |5 s' Q2 F8 lfastcgi_busy_buffers_size 32k;
2 C, h: Y! S( J% R' V0 t這個指令我也不知道是做什麼用,只知道默認值是 fastcgi_buffers 的兩倍。
- E( O3 a3 V% s& F6 |) jfastcgi_temp_file_write_size 32k;8 q; S( Y$ o) _1 Q( a
在寫入 fastcgi_temp_path 時將用多大的數據塊,默認值是 fastcgi_buffers 的兩倍。8 H6 \9 u  w9 {8 M) J+ F3 J
fastcgi_cache TEST' k& c! {, k& f; f3 z" p9 ]6 M- ~
開啟 FastCGI 緩存並且為其製定一個名稱。個人感覺開啟緩存非常有用,可以有效降低 CPU 負載,並且防止 502 錯誤。
6 \( d3 ]0 f# l但是這個緩存會引起很多問題,因為它緩存的是動態頁面。具體使用還需根據自己的需求。
) ]2 {' j  P2 M3 g, m2 q! Efastcgi_cache_valid 200 302 1h;
/ v" u  Q% n! N: R1 t0 o. z/ f/ W1 Ufastcgi_cache_valid 301 1d;9 C: b: Y* X; D" t
fastcgi_cache_valid any 1m;6 I$ L  N* C- \- K
為指定的應答代碼指定緩存時間,如上例中將 200,302 應答緩存一小時,301 應答緩存 1 天,其他為 1 分鐘。
+ a  i1 k1 j. y4 L3 wfastcgi_cache_min_uses 1;
/ J7 o8 x9 Q* A( M緩存在 fastcgi_cache_path 指令 inactive 參數值時間內的最少使用次數,如上例,如果在 5 分鐘內某文件 1 次也沒有被* V' t6 A8 |8 f8 B  e  W
使用,那麼這個文件將被移除。9 E- \! ^" Q8 s/ y" a
fastcgi_cache_use_stale error timeout invalid_header http_500;7 _; m1 W4 z& c: u1 b9 r. C9 H% X6 c
不知道這個參數的作用,猜想應該是讓 nginx 知道哪些類型的緩存是沒用的。% C9 k) X3 J2 L( }. I% g1 h# O
以上為 nginx 中 FastCGI 相關參數,另外,FastCGI 自身也有一些配置需要進行優化,如果你使用 php-fpm 來管理
6 O" e3 r. }9 ]0 M& P3 n2 zFastCGI,可以修改配置文件中的以下值:
) E( [9 z% T0 {- [# O<value name="max_children">60</value>
9 F( B/ D* ~7 y同時處理的並發請求數,即它將開啟最多 60 個子線程來處理並發連接。
9 |+ Y& l4 [1 D+ d' A* f<value name="rlimit_files">102400</value>  Q- y5 x9 j7 \4 V4 T- x. C
最多打開文件數。
) s1 Q9 g7 h) K1 o( L3 A<value name="max_requests">204800</value>
5 R0 n$ L3 A0 U$ ^& s每個進程在重置之前能夠執行的最多請求數。
3 J6 H) i- I1 {/ n1 d' }* c/ k; u& }6 X5 _9 y
3 B- ^4 o* O7 g+ K
參考資料:6 H4 v: S1 A1 ?$ y& \. E
http://demo.ckan.org/dataset/daf ... /download/nginx.pdf. Y4 n$ x; A% L/ v9 q/ b/ i/ K
http://blog.chinaunix.net/u3/105004/showart_2087155.html. w& l/ w" P; g8 ~6 Z. p6 k+ r' I
http://nginx.179401.cn/" X5 W& n- s7 c% L
http://blog.s135.com/nginx_php_v5/
4 L. }9 J; J7 whttp://xyz.cinc.biz/2015/09/linux-nginx-php-fpm-connection.html3 h+ K! V, g5 j
https://www.netroby.com/view/3128
. q  {0 h; S, C5 }/ Mfastcgi 快取:* V9 k! R' O4 B8 E. V5 [
https://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/
) y' w( J: |, U
其他:$ c' _' O/ P  p
nginx設定檔內參數的詳細說明: http://nginx.org/en/docs/http/ng ... l#keepalive_timeout* O6 _$ U; e% c; x& l5 \
nginx優化:http://www.jianshu.com/p/2184654ba4b2
3 q! O+ Z3 s: q; u. t3 Ygzip壓縮功能以減少網路傳輸檔案大小:http://wenzhixin.net.cn/2013/11/10/server_gzip_on3 h$ I# _8 u; {1 Z0 w( _! L# O

$ O+ E( n. r1 ]5 {; B9 ~" Q4 |# B

* M# c0 ?( y7 I: E
% s! g' e# p  W6 A% j! n




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