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

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

作者: IT_man    時間: 2016-10-1 22:08
標題: nginx優化(針對nginx.conf)
以CentOS 之 nginx的設定檔是在 /etc/nginx/nginx.conf8 @( B" }% u" O7 H% f" L( P) t' B/ F
一般來說 nginx 配置文件中對優化比較有作用的為以下幾項:6 [- P/ Y2 F( j
worker_processes 8;9 x. Y9 }8 n' Y* Y
nginx 進程數,建議按照 cpu 數目來指定,一般為它的倍數。% \" N7 \0 k" X5 A) z
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
/ z7 D4 @) z; J5 w5 j為每個進程分配 cpu,上例中將 8 個進程分配到 8 個 cpu,當然可以寫多個,或者將一個進程分配到多個 cpu。/ [1 X9 J+ K2 K% v; j7 j0 {
worker_rlimit_nofile 102400;  l6 {# s$ }: G) h, T9 i
這個指令是指當一個 nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與 nginx 進程數
0 d! j7 D; Z9 X相除,但是 nginx 分配請求並不是那麼均勻,所以最好與 ulimit -n 的值保持一致。/ t6 Z8 X1 H- M- T: j! X( [" @
use epoll;" s9 m, F% M* [7 h3 t$ t
使用 epoll 的 I/O 模型,這個不用說了吧。$ q2 I. I: C; v. t
worker_connections 102400;- _# I7 u% B- g( V! D: t0 U& e: R  q
每個進程允許的最多連接數,理論上每台 nginx 服務器的最大連接數為 worker_processes*worker_connections。6 Q$ N! [* b, M. H& H
keepalive_timeout 60;+ i7 Q% l# A7 r8 O
keepalive 超時時間。7 u6 J% x' t5 u* `9 l
client_header_buffer_size 4k;
5 {% s* c7 p/ L% W客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過 1k,不過由
  q7 H$ z9 i: p3 U+ E5 u於一般系統分頁都要大於 1k,所以這裡設置為分頁大小。分頁大小可以用命令 getconf PAGESIZE 取得。7 l  z* F% @5 K9 `  G; n, G
open_file_cache max=102400 inactive=20s;, W2 ]- u" m* o0 X' w$ N
這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時- |4 ^  L! Q5 b6 v' x
間文件沒被請求後刪除緩存。& J1 u6 ]& S; [  i( k, n: _
open_file_cache_valid 30s;, X& x; o+ k* {
這個是指多長時間檢查一次緩存的有效信息。* U; c8 y. N2 K  ~6 P# R# f5 }$ x/ a
open_file_cache_min_uses 1;3 r; h0 U& E& V, l
open_file_cache 指令中的 inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打
5 T6 A# B. E4 J$ x1 n# X開的,如上例,如果有一個文件在 inactive 時間內一次沒被使用,它將被移除。
# O# Q) t  K  }0 O* K9 m) p
+ I1 K4 B) H7 [- s% t, n5 l9 C  W/ F  r+ t
關於內核參數的優化:
2 J4 Z# n+ ?3 ~) N4 J, K) I7 P9 Nnet.ipv4.tcp_max_tw_buckets = 6000
, D3 C* ]; [) Ytimewait 的數量,默認是 180000。7 I* U' A$ d( ~. @4 @
net.ipv4.ip_local_port_range = 1024 65000
. q8 f, {1 D! y. E5 f允許系統打開的端口範圍。  C7 d/ x+ c- v$ i
net.ipv4.tcp_tw_recycle = 1
! ^" m; L+ e+ T7 m  x) s7 W2 k啟用 timewait 快速回收。
9 G1 V* K. H4 \3 }2 W5 }2 qnet.ipv4.tcp_tw_reuse = 1
( a2 k. a: R& N$ s" \開啟重用。允許將 TIME-WAIT sockets 重新用於新的 TCP 連接。1 P! J% A+ p6 X
net.ipv4.tcp_syncookies = 19 g- B& e* D9 ?: U2 H
開啟 SYN Cookies,當出現 SYN 等待隊列溢出時,啟用 cookies 來處理。- h5 a8 o3 H- P. {
net.core.somaxconn = 2621440 k1 N/ A$ q# M7 r9 o
web 應用中 listen 函數的 backlog 默認會給我們內核參數的 net.core.somaxconn 限製到 128,而 nginx 定義的. I" k6 R+ j' d$ B6 u
NGX_LISTEN_BACKLOG 默認為 511,所以有必要調整這個值。
2 u: I6 }, v* J( t% Ynet.core.netdev_max_backlog = 262144
/ c$ E# F1 `( O0 A  ?每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。7 U* A  f9 m) C0 o' C( f
net.ipv4.tcp_max_orphans = 2621445 S! H0 |  @+ d) u7 e+ d
系統中最多有多少個 TCP 套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤兒連接將即刻被復位並打+ Y4 C* f& S' n/ ?0 _7 f
印出警告信息。這個限制僅僅是為了防止簡單的 DoS 攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值
% m7 e: p- ~5 Y6 x' [4 e( D(如果增加了內存之後)。
0 _3 x- U5 G# K$ x) ~net.ipv4.tcp_max_syn_backlog = 262144
/ I& Q0 b3 L6 f( M& L* u記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對於有 128M 內存的系統而言,缺省值是 1024,小內存的系: O: e8 y4 P1 L# w- ~  A
統則是 128。% _7 R, C0 P) @1 u& n. ^% v2 m$ k
net.ipv4.tcp_timestamps = 01 `" m6 q0 ~& u1 [! t" t
時間戳可以避免序列號的捲繞。一個 1Gbps 的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的3 R) p( r% Z1 X
數據包。這裡需要將其關掉。4 d$ G- B; \3 K: ^3 T
net.ipv4.tcp_synack_retries = 1
- Q( I9 }5 u, I& }6 ^' M為了打開對端的連接,內核需要發送一個 SYN 並附帶一個回應前面一個 SYN 的 ACK。也就是所謂三次握手中的第二次( M2 z( ]. B1 S# z# h
握手。這個設置決定了內核放棄連接之前發送 SYN+ACK 包的數量。
9 j( H) ^$ A* `1 F' hnet.ipv4.tcp_syn_retries = 1" C: r: s2 c2 {8 i
在內核放棄建立連接之前發送 SYN 包的數量。
* V) k5 m  Q1 c- B# Q8 gnet.ipv4.tcp_fin_timeout = 1
3 M- ^+ Z7 ]2 A如果套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間。對端可以出錯並永遠不關閉連接,甚1 o* b4 @; p$ s" w% C
至意外當機。缺省值是 60 秒。2.2 內核的通常值是 180 秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕! J; M9 r6 y2 l2 J1 R
載的 WEB 服務器,也有因為大量的死套接字而內存溢出的風險,FIN- WAIT-2 的危險性比 FIN-WAIT-1 要小,因為它最
$ {* v  Q- D3 P7 ~6 }# q- g多只能吃掉 1.5K 內存,但是它們的生存期長些。
  {% d( S  w* p$ U; S/ `6 ], P' gnet.ipv4.tcp_keepalive_time = 303 P5 y& t( Z7 R! r* Y
當 keepalive 起用的時候,TCP 發送 keepalive 消息的頻度。缺省是 2 小時。1 n& e+ T  ^* i, O1 ]1 X

# M; p  d. l  o  j2 J5 D
) N6 m) F# C7 x5 @" d! {6 Y下面貼一個完整的內核優化設置:
9 `8 U$ u! ^" B8 O5 Pnet.ipv4.ip_forward = 0+ A+ j) x. h' P
net.ipv4.conf.default.rp_filter = 15 L4 u$ w7 ^$ ]8 A1 n5 L" _! J
net.ipv4.conf.default.accept_source_route = 0
* I4 _7 j( C# I( T) L1 w) O0 Z$ |kernel.sysrq = 0
7 Y9 w" `# l9 ]- ^+ j2 S( t) P3 gkernel.core_uses_pid = 1
% j1 e1 ]  Z% v7 r; Wnet.ipv4.tcp_syncookies = 10 Z( ?: R8 d6 f1 k0 p+ O* ~
kernel.msgmnb = 65536
' @+ L& B3 x' Y, Mkernel.msgmax = 65536* u; E% j5 l0 N, B
kernel.shmmax = 687194767365 w& A; r, V0 j3 G9 f& h: k% y, c
kernel.shmall = 4294967296  Q! f. ?! m; l5 y! p4 ^+ ^
net.ipv4.tcp_max_tw_buckets = 6000
; F8 P; c5 V" S- ^" n4 bnet.ipv4.tcp_sack = 1* C* I! ~; o* w
net.ipv4.tcp_window_scaling = 1/ W1 l8 Q3 \5 A& a" \) r5 u
net.ipv4.tcp_rmem = 4096 87380 4194304
7 F( ~. r% A% X) ^+ Jnet.ipv4.tcp_wmem = 4096 16384 4194304
( U3 f0 f( y7 d" y' a$ xnet.core.wmem_default = 8388608
5 A7 Z! Q; S; f; s4 inet.core.rmem_default = 8388608# p) {# Q* |; _  E4 m& z
net.core.rmem_max = 16777216
/ c3 K8 I# |5 U4 q( n& g6 F( Dnet.core.wmem_max = 16777216/ F, d8 o: }5 Z# O, ~; Y, p- P% r
net.core.netdev_max_backlog = 262144
4 P1 y$ f) B3 V. ?9 Xnet.core.somaxconn = 2621440 G7 [9 h! Y9 d* n4 K
net.ipv4.tcp_max_orphans = 32768001 E8 n2 @4 _  ?7 g- d4 l1 I
net.ipv4.tcp_max_syn_backlog = 262144
0 W4 q' Q( `# b" Q" Lnet.ipv4.tcp_timestamps = 0' w% D6 B1 X" q& h7 d) k' W2 y
net.ipv4.tcp_synack_retries = 15 g9 I6 x$ h7 c! l5 W" L
net.ipv4.tcp_syn_retries = 1
! `  L4 l# h# A1 @$ q3 ]& ?1 V7 Jnet.ipv4.tcp_tw_recycle = 1! h# _4 f1 O7 ]. Z
net.ipv4.tcp_tw_reuse = 11 q0 F5 G  [. n3 ~' P! p3 z
net.ipv4.tcp_mem = 94500000 915000000 927000000* I$ C/ F& Z  y5 F: \7 V! _
net.ipv4.tcp_fin_timeout = 1
7 A* b, W9 n6 v- {) L4 y0 cnet.ipv4.tcp_keepalive_time = 307 M- b  S9 }6 S
net.ipv4.ip_local_port_range = 1024 65000+ @3 Y4 Y6 l( W$ {9 O1 t8 ]

8 e4 T7 S8 t+ T; e& J# z1 o1 F4 I: [" M& Q3 j
下面是一個簡單的 nginx 配置文件:nginx.conf" z6 b' I" j1 C1 Q, R+ s
user www www;9 l& |- b. h) @7 G
worker_processes 8;
* ?+ O5 A3 ?/ nworker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;9 ^7 {  ~* _# y4 p
error_log /www/log/nginx_error.log crit;
* P( q* {" l  Q7 g5 e7 kpid /usr/local/nginx/nginx.pid;
8 e% `' D2 t( l: m2 x* w7 lworker_rlimit_nofile 204800;
4 ?+ W  W9 y9 }* i& c0 Aevents; l+ l& j$ ~' l% H, z
{6 G% R, j0 p; q
  use epoll;* ^# Z; l: t/ X( }+ C3 K
  worker_connections 204800;1 ?( Z: d7 A' g/ r  W$ e& |- v
}% H2 F7 Q3 Y8 R4 {$ L
http
3 g& `/ o2 V' _& x9 q5 d$ r5 v{
4 j8 E0 n5 \7 Kinclude mime.types;
- m" y8 [" H6 ] default_type application/octet-stream;
9 m5 x7 k! z. t6 e( k* M. d& D charset utf-8;8 p- r% [6 x) ]0 V/ H4 Q. o
server_names_hash_bucket_size 128;' r( }7 y, [; H( a- N" w& D& U* E
client_header_buffer_size 2k;# C- G6 G6 T- ?1 r
large_client_header_buffers 4 4k;
8 M" p% L" a9 U client_max_body_size 8m;
+ _+ ^5 n; |, }$ P( v1 w sendfile on;* e3 q4 o! f, z  O9 n+ v) }
tcp_nopush on;7 e! p+ ]8 {1 F" e( r6 g+ ]
keepalive_timeout 60;" V8 e! o- q  S, P: A2 o9 B0 z
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;# |( Z0 F6 v9 x2 b6 M
fastcgi_connect_timeout 300;- k) a: ?: s2 q9 l/ V
fastcgi_send_timeout 300;5 l4 M6 m# U# ^# E% U; {
fastcgi_read_timeout 300;
( `$ B! H5 P8 h, I/ t% a% t, X fastcgi_buffer_size 16k;
& P/ c7 k' m" N, B: e fastcgi_buffers 16 16k;
$ U5 h6 w+ E! p0 `! j2 ~8 o+ \ fastcgi_busy_buffers_size 16k;4 v6 f5 p0 d! ?6 f6 A* V' u6 G6 u
fastcgi_temp_file_write_size 16k;$ K; g1 [0 H' Y' {, B! f: d
fastcgi_cache TEST;1 `* X, L: Z4 A9 }- J
fastcgi_cache_valid 200 302 1h;8 r; O$ ~: G) ^+ Q% r2 @4 o: U7 q
fastcgi_cache_valid 301 1d;
% ~& h' p: `5 B% i: p& H fastcgi_cache_valid any 1m;
* Z" e( O" S5 Q. N9 N  k" h1 c fastcgi_cache_min_uses 1;6 O2 n( E: f$ s
fastcgi_cache_use_stale error timeout invalid_header http_500;3 q+ b& F6 N8 b+ i, E$ z0 ]
open_file_cache max=204800 inactive=20s;
, E4 E. Z  D; p& g3 {$ C open_file_cache_min_uses 1;4 H  r: \6 L) b2 M, v9 \1 A8 L' p
open_file_cache_valid 30s;
0 T9 T/ P' l0 n2 `' N tcp_nodelay on;! I0 o1 h: P, b* K( `7 V# W1 y; U
gzip on;
% @. `# E+ W3 s! u% H gzip_min_length 1k;2 U& G3 W7 L, P
gzip_buffers 4 16k;# i& i; J1 _/ y+ ~" a& m" C. d
gzip_http_version 1.0;
$ ~$ n& q4 |1 F1 J- W! n; [ gzip_comp_level 2;
( {5 w/ A1 R+ S/ P) k  l) J5 P gzip_types text/plain application/x-javascript text/css application/xml;1 E' a+ v+ S. A: o# {8 c- x( h
gzip_vary on;) m; w& P7 A' F0 w/ A. y+ t
server
3 I. {# ~+ z7 ]2 H {# I4 w; Q  X2 q0 U% r8 j4 a
listen 8080;
+ U  O) l; y9 F; G5 Z" R server_name backup.aiju.com;: i+ y) K" q% C: x! s
index index.php index.htm;" ]' X" i* K% G. l+ I
root /www/html/;
* D0 F' f1 m. H: R$ x  ~ location /status8 I, M% t( `, `5 X4 \5 }
{
% T- o0 q6 }: k  `. w. @% B stub_status on;. A: z) m1 T' R! i0 Z
}
" ?! l# I% `0 r location ~ .*\.(php|php5)?$
1 `# ^/ D- k0 V) |7 r/ C {
, X4 z7 Y5 U8 J; s* W, @ fastcgi_pass 127.0.0.1:9000;, F* _/ l* P- B: D; G3 ]5 |
fastcgi_index index.php;
. z) u( a/ n' p! \8 a- B) x/ I include fcgi.conf;. b# n' D$ I7 m5 W4 b
}6 r2 V* y/ T! i/ }: |3 v3 W
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
. [1 i* a2 m: O6 f {3 Z7 a, u* x& P! F! O2 ?
expires 30d;0 c4 A7 g- X5 s4 Z
}$ w/ J1 G: X; u) h9 |; \
log_format access '$remote_addr - $remote_user [$time_local] "$request" '5 k1 [! i% S- T. p" R3 h$ J
'$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';
; T9 o8 o9 J% O; C- Y1 V4 } access_log /www/log/access.log access;9 ^( C1 j' A* ?: {
}1 @( |7 T9 ]1 g3 Z6 s* ^
}% D; W: R. X; X$ J

5 p9 P0 v- L1 O關於 FastCGI 的幾個指令:; V( |# W' ~. M' _
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
  w& w1 \" Z5 j& |這個指令為 FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。) b, }4 X0 }" F7 e# M$ P
fastcgi_connect_timeout 300;% k' _' y9 P; ^" U
指定連接到後端 FastCGI 的超時時間。
$ u, _# Z9 F5 @7 ^" bfastcgi_send_timeout 300;9 q" i8 e: T3 l8 d, f" R
向 FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向 FastCGI 傳送請求的超時時間。* l, P: f6 A1 b& p
fastcgi_read_timeout 300;4 ?$ A. g# |! v. ?9 U3 @# f$ I
接收 FastCGI 應答的超時時間,這個值是指已經完成兩次握手後接收 FastCGI 應答的超時時間。8 h  }7 g: a  L5 k" o
fastcgi_buffer_size 16k;
4 r4 |8 f& e' `+ W7 Z指定讀取 FastCGI 應答第一部分需要用多大的緩衝區,這裡可以設置為 fastcgi_buffers 指令指定的緩衝區大小,上面的8 x+ `+ T$ p' b# m9 L
指令指定它將使用 1 個 16k 的緩衝區去讀取應答的第一部分,即應答頭,其實這個應答頭一般情況下都很小(不會超過- {9 f9 {% a) h/ Z7 M
1k),但是你如果在 fastcgi_buffers 指令中指定了緩衝區的大小,那麼它也會分配一個 fastcgi_buffers 指定的緩衝區大
7 d! W; \; x+ ^& {小去緩存。! ^+ Y# w7 f! y
fastcgi_buffers 16 16k;
$ |. X) \: M( o) V! y+ f指定本地需要用多少和多大的緩衝區來緩衝 FastCGI 的應答,如上所示,如果一個 php 腳本所產生的頁面大小為 256k,8 o2 k. u& N  Q! Q+ ?! C
則會為其分配 16 個 16k 的緩衝區來緩存,如果大於 256k ,增大於 256k 的部分會緩存到 fastcgi_temp 指定的路徑中,; @4 C4 V! S! v/ S
當然這對服務器負載來說是不明智的方案,因為內存中處理數據速度要快於硬盤,通常這個值的設置應該選擇一個你的
* ~7 [2 g9 k. I+ S  H6 V站點中的 php 腳本所產生的頁面大小的中間值,比如你的站點大部分腳本所產生的頁面大小為 256k 就可以把這個值設
$ A, ]) h' I" n0 p$ _! z$ ~置為 16 16k,或者 4 64k 或者 64 4k,但很顯然,後兩種並不是好的設置方法,因為如果產生的頁面只有 32k,如果用 4
# @7 }" z& z) V7 Y; c64k 它會分配 1 個 64k 的緩衝區去緩存,而如果使用 64 4k 它會分配 8 個 4k 的緩衝區去緩存,而如果使用 16 16k 則它
6 p: F' E3 }) B2 j+ o會分配 2 個 16k 去緩存頁面,這樣看起來似乎更加合理。- S; p0 ~( }. Q* U
fastcgi_busy_buffers_size 32k;
, g! B8 Z0 J& Y# _! i這個指令我也不知道是做什麼用,只知道默認值是 fastcgi_buffers 的兩倍。0 `4 c( U5 R2 F& R
fastcgi_temp_file_write_size 32k;6 O& i) S$ B( c& r
在寫入 fastcgi_temp_path 時將用多大的數據塊,默認值是 fastcgi_buffers 的兩倍。
, W) P  N, B0 dfastcgi_cache TEST
2 R; G2 X% S. ^  ~* C  J開啟 FastCGI 緩存並且為其製定一個名稱。個人感覺開啟緩存非常有用,可以有效降低 CPU 負載,並且防止 502 錯誤。/ ^6 N$ d7 {0 _; z- F- f& G
但是這個緩存會引起很多問題,因為它緩存的是動態頁面。具體使用還需根據自己的需求。' z; n" U, s: O, H& |. v' n: t
fastcgi_cache_valid 200 302 1h;
8 e4 r1 A7 i& y3 Y9 F" cfastcgi_cache_valid 301 1d;
' C: L7 P8 H* k+ nfastcgi_cache_valid any 1m;
- }5 @5 ^' K% [0 E6 j4 Y3 y$ D- t/ g為指定的應答代碼指定緩存時間,如上例中將 200,302 應答緩存一小時,301 應答緩存 1 天,其他為 1 分鐘。+ `4 l1 u9 O) Z9 m; \
fastcgi_cache_min_uses 1;
% v7 ~" R# b3 `; F緩存在 fastcgi_cache_path 指令 inactive 參數值時間內的最少使用次數,如上例,如果在 5 分鐘內某文件 1 次也沒有被6 R5 l5 [4 d+ u0 ?. }) M
使用,那麼這個文件將被移除。
! Q- c5 |; x' H+ f9 ^fastcgi_cache_use_stale error timeout invalid_header http_500;
( P+ Z$ I3 A/ ?5 l( U+ s. M不知道這個參數的作用,猜想應該是讓 nginx 知道哪些類型的緩存是沒用的。( y$ a7 z, c  h4 z; e
以上為 nginx 中 FastCGI 相關參數,另外,FastCGI 自身也有一些配置需要進行優化,如果你使用 php-fpm 來管理# s- L: b7 t6 C( O" Q; Y( s
FastCGI,可以修改配置文件中的以下值:+ W1 R2 m/ @/ [3 ?2 R$ {1 ^! ]
<value name="max_children">60</value>
' d1 d1 w- l6 Y0 J: c6 w' |$ M同時處理的並發請求數,即它將開啟最多 60 個子線程來處理並發連接。
2 Y4 G' ^3 B! ^5 O2 z<value name="rlimit_files">102400</value>2 C$ P/ `  Z) O3 n
最多打開文件數。
$ v  P" h  d8 f$ Y4 f<value name="max_requests">204800</value>& z/ ~. n9 ^& _
每個進程在重置之前能夠執行的最多請求數。
3 U( S) e. E' ?. i: |' E0 H: X5 `6 d" m2 I
' a) B* p( j9 h* C3 u% U; f# A
參考資料:1 R0 I& ]" S* E$ t3 K+ Q
http://demo.ckan.org/dataset/daf ... /download/nginx.pdf  i3 b  h# O4 i# j+ G
http://blog.chinaunix.net/u3/105004/showart_2087155.html
' p# E2 H# A% T; ]1 ^! Mhttp://nginx.179401.cn/
; B) d7 j- A( F$ Q4 nhttp://blog.s135.com/nginx_php_v5/
4 [$ m5 U4 w7 o( }http://xyz.cinc.biz/2015/09/linux-nginx-php-fpm-connection.html
; c$ v' E4 P) v3 T% @) whttps://www.netroby.com/view/3128
7 v: E* f9 Y1 S# x+ Dfastcgi 快取:
/ E' r1 R, W* t5 T; _- _( j
https://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/
% M# A. P9 E+ G# D+ ?
其他:
+ L" [& A; ]3 m1 D$ z% R+ M) fnginx設定檔內參數的詳細說明: http://nginx.org/en/docs/http/ng ... l#keepalive_timeout& _4 ~. N- N8 x8 x; W
nginx優化:http://www.jianshu.com/p/2184654ba4b2
, G  A- i( n" K  z* |gzip壓縮功能以減少網路傳輸檔案大小:http://wenzhixin.net.cn/2013/11/10/server_gzip_on) T5 M1 P7 f6 \1 u) w

: i$ e" W/ i% |. i4 j/ G0 N/ P9 `, `

& \4 k* t0 [; G) ^. B" {) r( I2 S4 {# K3 }





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