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

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

作者: IT_man    時間: 2016-10-1 22:08
標題: nginx優化(針對nginx.conf)
以CentOS 之 nginx的設定檔是在 /etc/nginx/nginx.conf
8 U6 q/ W, a4 n: d一般來說 nginx 配置文件中對優化比較有作用的為以下幾項:
' B1 W( ~. J  Q) Q. rworker_processes 8;/ Z0 z1 o) p* J2 E8 @% U/ U' j
nginx 進程數,建議按照 cpu 數目來指定,一般為它的倍數。
" `+ c2 i4 h" G. J/ Bworker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
  H! K2 ^3 V: @5 F/ ?為每個進程分配 cpu,上例中將 8 個進程分配到 8 個 cpu,當然可以寫多個,或者將一個進程分配到多個 cpu。- U6 K' d8 i" y! [
worker_rlimit_nofile 102400;& X) ]  }0 P) t) B: k' [
這個指令是指當一個 nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與 nginx 進程數, Q/ q: q* U8 N. @6 t7 s- G5 z
相除,但是 nginx 分配請求並不是那麼均勻,所以最好與 ulimit -n 的值保持一致。
" ?7 w; p2 b$ ?- C7 vuse epoll;1 x# ^, A$ n. t- L1 v- @4 B
使用 epoll 的 I/O 模型,這個不用說了吧。7 |' u' r+ g3 \
worker_connections 102400;6 `, s" z1 D" I
每個進程允許的最多連接數,理論上每台 nginx 服務器的最大連接數為 worker_processes*worker_connections。7 I* K% e9 p6 ^$ h" N- e2 j
keepalive_timeout 60;+ N( M# W) S: J0 [* \9 }. k% u
keepalive 超時時間。
* L. n7 Q- F: V& Y3 O: Fclient_header_buffer_size 4k;
7 y- r9 ]$ q7 Z客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過 1k,不過由
8 F3 M: G$ @, m; v0 m& }# ~於一般系統分頁都要大於 1k,所以這裡設置為分頁大小。分頁大小可以用命令 getconf PAGESIZE 取得。# n; k% _" H2 m6 U: w8 k0 M# A& p5 h
open_file_cache max=102400 inactive=20s;
4 C7 O. P% U! T% a1 V) C8 I) h這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時
4 J) L% y9 i) D, P+ K間文件沒被請求後刪除緩存。
; I" R1 y, W/ \/ Q0 C( w+ Iopen_file_cache_valid 30s;! ?: o" I5 P$ M& a+ O/ ~
這個是指多長時間檢查一次緩存的有效信息。
  j; S0 G; t; F% B+ mopen_file_cache_min_uses 1;6 U2 G- l8 Q! o3 S$ h' |
open_file_cache 指令中的 inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打
% n! [: [3 q; k# q* @9 q開的,如上例,如果有一個文件在 inactive 時間內一次沒被使用,它將被移除。9 e  |0 ^$ a+ v% j$ ?
3 P2 K! }+ T# j# _+ |3 L; T/ A

  U# F4 B: `5 b. E( F( T關於內核參數的優化:
+ n# x3 |) ~# J8 i9 }; Y, Z: F; ?net.ipv4.tcp_max_tw_buckets = 6000; W0 `& U) k. Q* x# j0 F8 {: t. ^
timewait 的數量,默認是 180000。, d  M& \/ n" F* B
net.ipv4.ip_local_port_range = 1024 65000
3 B. U- @; a3 d允許系統打開的端口範圍。
% h6 r6 c; v- E: l9 o* N! Tnet.ipv4.tcp_tw_recycle = 1" Y& k% Z! z) v
啟用 timewait 快速回收。
3 }1 z5 R' ]  C5 Inet.ipv4.tcp_tw_reuse = 1% u- O- k! u+ q. D0 ~
開啟重用。允許將 TIME-WAIT sockets 重新用於新的 TCP 連接。
: L& x! o6 Z% R! Anet.ipv4.tcp_syncookies = 1
- Z8 \4 k1 L: M開啟 SYN Cookies,當出現 SYN 等待隊列溢出時,啟用 cookies 來處理。4 T6 U! r( m" Z8 F3 n7 `
net.core.somaxconn = 262144
5 ?: p8 L0 z% {3 M& L- D5 vweb 應用中 listen 函數的 backlog 默認會給我們內核參數的 net.core.somaxconn 限製到 128,而 nginx 定義的2 [- Y' O; Y! o: v
NGX_LISTEN_BACKLOG 默認為 511,所以有必要調整這個值。
( ]9 ?. C& b6 W% mnet.core.netdev_max_backlog = 262144
" H) @/ w+ l* x$ }" [' O每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。
0 [( c. }+ A! A6 U; [! _! Anet.ipv4.tcp_max_orphans = 262144
; o$ q6 S. r6 `+ I% M1 B系統中最多有多少個 TCP 套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤兒連接將即刻被復位並打
! b/ Q, o2 {! S, Y; ^印出警告信息。這個限制僅僅是為了防止簡單的 DoS 攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值* ^8 q" V/ N1 S
(如果增加了內存之後)。
- E5 @  ~4 r: |) G, s4 h( Gnet.ipv4.tcp_max_syn_backlog = 262144
( r" v# N9 ?# `- O記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對於有 128M 內存的系統而言,缺省值是 1024,小內存的系
. ^* G6 l6 X8 l6 z統則是 128。
" f- ^9 M' @& n! ?9 Inet.ipv4.tcp_timestamps = 0. l( N1 f1 c2 g% k
時間戳可以避免序列號的捲繞。一個 1Gbps 的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的/ F  q! M' O1 K8 n7 n1 K8 G; u
數據包。這裡需要將其關掉。- z; Z. O8 k  [
net.ipv4.tcp_synack_retries = 1
8 Q) F/ X2 l4 D0 W為了打開對端的連接,內核需要發送一個 SYN 並附帶一個回應前面一個 SYN 的 ACK。也就是所謂三次握手中的第二次& z9 W3 [& F' g4 P, N
握手。這個設置決定了內核放棄連接之前發送 SYN+ACK 包的數量。
' c! [& v- J, w1 f& g$ Jnet.ipv4.tcp_syn_retries = 1
# i4 {1 h2 q: c: I9 C在內核放棄建立連接之前發送 SYN 包的數量。
9 p' u' D5 [5 e# Q+ K5 f+ Pnet.ipv4.tcp_fin_timeout = 1
* _6 U5 H  b) Z& y+ z如果套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間。對端可以出錯並永遠不關閉連接,甚
" K! m4 Z3 T2 M. Z至意外當機。缺省值是 60 秒。2.2 內核的通常值是 180 秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕; F; q7 ^7 v" X9 I4 J. _8 f" T! }
載的 WEB 服務器,也有因為大量的死套接字而內存溢出的風險,FIN- WAIT-2 的危險性比 FIN-WAIT-1 要小,因為它最8 F" d- G$ {. E9 M8 ]! V9 P6 D2 |
多只能吃掉 1.5K 內存,但是它們的生存期長些。
3 S, i& S3 }2 [net.ipv4.tcp_keepalive_time = 30
/ u  R) d1 Z* j: R8 P/ Z9 p0 X當 keepalive 起用的時候,TCP 發送 keepalive 消息的頻度。缺省是 2 小時。# T4 [$ L" d6 f2 ^* N7 w& j

7 H* G- Z) k% a- V3 ?/ a( V# G" [; I& ]6 h0 E! t
下面貼一個完整的內核優化設置:! R/ a2 Y1 U6 W# {6 Y0 _
net.ipv4.ip_forward = 0, y2 ]  r3 p+ v3 y' e' l4 w- O% n
net.ipv4.conf.default.rp_filter = 1
9 B( |# X: h4 \. f7 Gnet.ipv4.conf.default.accept_source_route = 0! \4 F  x) f0 t0 R- m+ O
kernel.sysrq = 0
  X& L# L2 C4 z7 e' f$ f& Skernel.core_uses_pid = 1: @# n: G" c1 w# u7 B
net.ipv4.tcp_syncookies = 1
/ x- {8 e' w) n6 f7 u; S/ u+ j0 z. [# Ikernel.msgmnb = 65536
' r$ R" D6 k2 X: j. {kernel.msgmax = 65536
3 D& W  l- h. k! i: N0 F: Wkernel.shmmax = 68719476736. H! Q/ G" p1 ^" {+ x/ Q5 Z
kernel.shmall = 4294967296
$ m- J* v; q  w1 ~# N7 knet.ipv4.tcp_max_tw_buckets = 6000
$ K; j2 b& H/ F2 ynet.ipv4.tcp_sack = 1
  O. Z! \* w* G" m. \: M/ a4 |net.ipv4.tcp_window_scaling = 1
( Z) t% F' ?: m( Qnet.ipv4.tcp_rmem = 4096 87380 4194304
% c6 P- u) Q/ q9 R7 rnet.ipv4.tcp_wmem = 4096 16384 4194304
3 w" h0 I5 [8 }net.core.wmem_default = 8388608
* v5 w5 P5 ^( Onet.core.rmem_default = 8388608
. b, q0 d( b7 u1 @4 [' H! P, mnet.core.rmem_max = 16777216- b  K$ b0 b# ~4 _* T0 T% \
net.core.wmem_max = 167772162 Y$ _0 ]" z( H+ ]8 Z: y
net.core.netdev_max_backlog = 262144: t* D8 K9 v* F1 {; Q( g4 f5 C
net.core.somaxconn = 262144' T. b9 }. V9 t! T6 Q! t
net.ipv4.tcp_max_orphans = 32768008 q, B( A: r! k5 j' k) o' f
net.ipv4.tcp_max_syn_backlog = 262144, N) E7 v+ R. {( w5 L
net.ipv4.tcp_timestamps = 0
, X% ?: L+ B! a( K0 d- l8 cnet.ipv4.tcp_synack_retries = 1! M4 G) R9 M5 S/ M$ J+ K
net.ipv4.tcp_syn_retries = 1
3 ^% u6 g: h1 l, e6 \% [8 Anet.ipv4.tcp_tw_recycle = 18 M2 m$ \# T; K" B
net.ipv4.tcp_tw_reuse = 1
6 V  ^: ?- k& O/ M7 D5 n. B: u* y3 jnet.ipv4.tcp_mem = 94500000 915000000 927000000
  [, A1 e" n+ H4 pnet.ipv4.tcp_fin_timeout = 1
* y1 ^8 ]! x( u9 i7 Cnet.ipv4.tcp_keepalive_time = 30
; {# z* d! {2 b2 {" j4 hnet.ipv4.ip_local_port_range = 1024 65000% G5 ^& I* D% T$ s

4 }/ z" f7 ?: d' n# b* K
) W- ]. [- I6 ~下面是一個簡單的 nginx 配置文件:nginx.conf
& p( a) \/ D# h' tuser www www;# @! G% m2 Q! X
worker_processes 8;7 b- j7 \9 ~" B( Y0 |4 U7 b" f
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;
) e3 H- g- w" ^, m; ?, h% s7 T  kerror_log /www/log/nginx_error.log crit;
& F9 [7 f# ~2 @+ Q0 |4 u, Wpid /usr/local/nginx/nginx.pid;* V9 a7 R4 u# M5 V# y2 e/ @- H
worker_rlimit_nofile 204800;
+ M% }' r9 Z1 y* `# Zevents% R  E1 |5 X6 F0 B% j/ i7 n1 ?
{
5 @' ?& L% _) k# r- @- d. x  use epoll;
# W: a. p6 k1 X2 w  worker_connections 204800;
$ U- `0 Q2 k. J3 ]3 ]6 j}
1 r* n* t: V+ ?+ l2 }http/ V" _9 I3 ~3 s& b6 x
{: G* B8 o3 g2 @# A3 \0 H
include mime.types;
5 Z% b% w  B% y2 I, F1 S7 D: y2 ^7 T default_type application/octet-stream;9 y& C* ^; s# r1 a
charset utf-8;
7 a6 t% E6 e: a2 B server_names_hash_bucket_size 128;
& F2 W- i' u" [% g client_header_buffer_size 2k;
  l+ M. ^2 o! j* V+ ^ large_client_header_buffers 4 4k;# I/ U+ |. x8 z. g; k* v3 R* ]- D# ]
client_max_body_size 8m;/ e+ [! E# U; I" H* ?% v
sendfile on;) ^7 P; V% v$ e6 Y. k
tcp_nopush on;2 o0 s2 b  t# A6 j4 _: \% ?. ]  _
keepalive_timeout 60;
& W- s( P$ c% z8 Q- A, y, V fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;8 g' {2 u0 w; o  ~! e2 G' \  K4 K/ d
fastcgi_connect_timeout 300;
4 w$ \9 ?) |: P( ? fastcgi_send_timeout 300;
# u& v, N& ?; J" ~6 r1 [! H+ D2 y fastcgi_read_timeout 300;
/ j5 f* ~; k. Z: O fastcgi_buffer_size 16k;
5 c8 s! u( g; Z! D5 C0 q: `/ F* p5 \ fastcgi_buffers 16 16k;; J8 I8 O9 O9 J9 ^
fastcgi_busy_buffers_size 16k;5 C6 C- h! d  ^) k$ |$ @
fastcgi_temp_file_write_size 16k;
: h# N$ A2 M5 N1 b fastcgi_cache TEST;' k3 U9 d2 ^# Y" f, a0 v
fastcgi_cache_valid 200 302 1h;
2 ]( g' ?2 G' c1 q/ n( r fastcgi_cache_valid 301 1d;
% c; J! {8 G( B fastcgi_cache_valid any 1m;4 o5 Z3 G+ {) N' ^8 ?% u
fastcgi_cache_min_uses 1;1 A& v; I0 P! i2 O8 c0 _# l7 v
fastcgi_cache_use_stale error timeout invalid_header http_500;8 `" p. K! ]; F& F3 l- d6 O
open_file_cache max=204800 inactive=20s;7 q2 K: I$ |2 f/ O9 a
open_file_cache_min_uses 1;
* {% m4 R" b. O* t' }% w% j0 G open_file_cache_valid 30s;
7 H& O: a. h: G0 A tcp_nodelay on;( @' Q8 l+ ?2 i6 Y
gzip on;$ a& n) s1 D2 A; L% K/ @' ?0 P6 J
gzip_min_length 1k;4 g( B. g2 w/ Q8 F$ T9 t, J$ ^
gzip_buffers 4 16k;/ _2 Q; U2 A$ T7 N1 Y
gzip_http_version 1.0;+ n7 i+ x7 B7 L* X! `7 W; B
gzip_comp_level 2;% R6 }7 Q+ U4 }
gzip_types text/plain application/x-javascript text/css application/xml;
* l; F$ w2 A0 C" v! u0 U* J8 Z gzip_vary on;1 _( L8 G& U" T8 Q- m" G) c8 q0 q
server0 q) V! G* ^9 p& e/ D0 q2 P$ w
{
: d/ o# g: y% U listen 8080;# \5 Y4 n" i! S# V
server_name backup.aiju.com;
) C# ~- G9 y: p& T) w! u8 Q! C index index.php index.htm;
! f; a, J& K, E1 @$ D3 M root /www/html/;
, U9 d! G( W1 q3 O, h location /status
% A$ O8 i- [$ H" z7 M5 | {
9 S- A/ c8 [6 z% F$ A; l6 w stub_status on;
7 x2 r" U7 y+ O/ _6 e6 }& X }1 S5 }- u: @1 ~6 K7 ]# O: \
location ~ .*\.(php|php5)?$: [' p% x; ~/ g: x9 U
{+ U& e1 l+ ?( \: e/ f1 \" ]" _- C
fastcgi_pass 127.0.0.1:9000;
5 ^1 s# o8 P4 Y" E1 s$ G5 ~ fastcgi_index index.php;2 X; Q! R5 z+ a' U% e6 R" b* N
include fcgi.conf;! \; o" `2 ~& S( y
}
: Q- R; `: h+ N6 Q% h location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$  d& b( D7 l8 O3 {% L
{+ g9 I  m, T. z; E8 e0 O8 U
expires 30d;$ J2 p+ z1 V7 S3 y, Z
}7 j, P5 |# [, Z4 t; b+ d# L
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
- h% O+ @5 @- d '$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';+ ^9 f) n. E9 S/ p. |
access_log /www/log/access.log access;1 H, S* ~0 u2 j! `& @
}
( ^( `9 Y+ K' S/ ?}
$ B- p$ o1 a' T5 k- C' _/ R) C% B1 r4 o+ {* e4 l
關於 FastCGI 的幾個指令:: J* x6 w; J4 R, m# E! X, w
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;. z& W9 _' r3 x! g' m9 I: G0 c
這個指令為 FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。( V1 j8 k# v7 g0 f# O/ Z
fastcgi_connect_timeout 300;9 q% f$ r$ Y; d0 h- K( D
指定連接到後端 FastCGI 的超時時間。
# _+ M; d* X2 J8 f8 K8 v: p# yfastcgi_send_timeout 300;
, P" Z: k1 i4 x1 h8 R向 FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向 FastCGI 傳送請求的超時時間。
1 ?$ Z9 E& c# P( Z. }& [fastcgi_read_timeout 300;
( |% d/ ?3 G* T+ m4 b" a5 [接收 FastCGI 應答的超時時間,這個值是指已經完成兩次握手後接收 FastCGI 應答的超時時間。, K1 |' i+ p) |4 ]8 X) B1 @; {
fastcgi_buffer_size 16k;
! ?+ v0 H) b" o1 ]指定讀取 FastCGI 應答第一部分需要用多大的緩衝區,這裡可以設置為 fastcgi_buffers 指令指定的緩衝區大小,上面的/ N; G! y# b  Y/ }; ]
指令指定它將使用 1 個 16k 的緩衝區去讀取應答的第一部分,即應答頭,其實這個應答頭一般情況下都很小(不會超過, v5 o1 a& ~- z" Y& Y# D
1k),但是你如果在 fastcgi_buffers 指令中指定了緩衝區的大小,那麼它也會分配一個 fastcgi_buffers 指定的緩衝區大' o, ~' [9 {/ o$ d/ i
小去緩存。
4 j; p- K- d+ E3 x; m  s# K- Bfastcgi_buffers 16 16k;* ~& b  a! |* S) H: y# |1 i8 p
指定本地需要用多少和多大的緩衝區來緩衝 FastCGI 的應答,如上所示,如果一個 php 腳本所產生的頁面大小為 256k,, P  {* r. Z9 d7 q2 E
則會為其分配 16 個 16k 的緩衝區來緩存,如果大於 256k ,增大於 256k 的部分會緩存到 fastcgi_temp 指定的路徑中,9 F# X# i: t7 t
當然這對服務器負載來說是不明智的方案,因為內存中處理數據速度要快於硬盤,通常這個值的設置應該選擇一個你的' z- u! M% S: _+ Q' w7 _& A# H
站點中的 php 腳本所產生的頁面大小的中間值,比如你的站點大部分腳本所產生的頁面大小為 256k 就可以把這個值設( G! F: A. D- m# S+ e
置為 16 16k,或者 4 64k 或者 64 4k,但很顯然,後兩種並不是好的設置方法,因為如果產生的頁面只有 32k,如果用 4. x4 ?5 S4 `) Q
64k 它會分配 1 個 64k 的緩衝區去緩存,而如果使用 64 4k 它會分配 8 個 4k 的緩衝區去緩存,而如果使用 16 16k 則它
3 p. e, D2 e/ X% F; ?5 N會分配 2 個 16k 去緩存頁面,這樣看起來似乎更加合理。
" `2 V2 f* _' I; R7 o4 g  m* ?* h: Ffastcgi_busy_buffers_size 32k;- Z8 U; R1 [, n3 R
這個指令我也不知道是做什麼用,只知道默認值是 fastcgi_buffers 的兩倍。; U, ~: v; [$ t" s1 P
fastcgi_temp_file_write_size 32k;. l# ?9 u; Z* n: [* T
在寫入 fastcgi_temp_path 時將用多大的數據塊,默認值是 fastcgi_buffers 的兩倍。
( l! V2 K2 ], N) _fastcgi_cache TEST
6 F$ s! N. s2 F$ u開啟 FastCGI 緩存並且為其製定一個名稱。個人感覺開啟緩存非常有用,可以有效降低 CPU 負載,並且防止 502 錯誤。$ y3 b5 Y2 v6 T& s
但是這個緩存會引起很多問題,因為它緩存的是動態頁面。具體使用還需根據自己的需求。
8 K( b- _/ \2 \# I% G# T" I' [fastcgi_cache_valid 200 302 1h;2 A, H& e3 z2 Z* z7 a
fastcgi_cache_valid 301 1d;1 C# t% Y! o( G
fastcgi_cache_valid any 1m;
" O5 O* _9 M: ^6 T  [為指定的應答代碼指定緩存時間,如上例中將 200,302 應答緩存一小時,301 應答緩存 1 天,其他為 1 分鐘。
; `6 `3 H* {1 f. dfastcgi_cache_min_uses 1;
: D# a, L& t; m6 u, W( }緩存在 fastcgi_cache_path 指令 inactive 參數值時間內的最少使用次數,如上例,如果在 5 分鐘內某文件 1 次也沒有被
0 `9 g4 |1 N0 k, a5 L6 x. F) K使用,那麼這個文件將被移除。- C2 N0 m1 z& t* y
fastcgi_cache_use_stale error timeout invalid_header http_500;! ]* k. c0 l' W7 f- k3 ]6 Q
不知道這個參數的作用,猜想應該是讓 nginx 知道哪些類型的緩存是沒用的。
& C& |: E" O" t8 _) `6 I) @以上為 nginx 中 FastCGI 相關參數,另外,FastCGI 自身也有一些配置需要進行優化,如果你使用 php-fpm 來管理; Q/ |& H% N8 \8 `3 a- F7 X
FastCGI,可以修改配置文件中的以下值:
! K6 Z0 a7 Q6 n, }" w<value name="max_children">60</value>$ i3 Q/ H4 v& K( \
同時處理的並發請求數,即它將開啟最多 60 個子線程來處理並發連接。
3 Z2 m( f$ Q% S5 D<value name="rlimit_files">102400</value>
1 ]- X8 M  d  y8 X1 B最多打開文件數。6 y" v- `; r8 Y( Q, M* a& {
<value name="max_requests">204800</value>
8 l7 Z) Y& w, Z每個進程在重置之前能夠執行的最多請求數。0 ]/ K* k9 S7 d8 w1 s. u
8 ~! o% ^) l& u! T! E$ A

4 x6 [/ r% u% o% @6 F& j, L參考資料:3 o5 f1 c; |, Q
http://demo.ckan.org/dataset/daf ... /download/nginx.pdf
% G  s; W* j, _0 W; Q8 ]& Fhttp://blog.chinaunix.net/u3/105004/showart_2087155.html
/ r  r: X' A8 `- j" m# Xhttp://nginx.179401.cn/# C3 `; @0 o" b8 y8 E
http://blog.s135.com/nginx_php_v5/
, R+ y7 U5 m, i3 w/ }8 vhttp://xyz.cinc.biz/2015/09/linux-nginx-php-fpm-connection.html0 Z5 B  G/ p. g! O4 U4 X
https://www.netroby.com/view/3128( A( V' }! L- t8 z* L
fastcgi 快取:% z" Q2 ~8 P* D& A6 i
https://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/
* q! u5 {5 I+ D( E" K
其他:4 _7 ?  S; w1 c
nginx設定檔內參數的詳細說明: http://nginx.org/en/docs/http/ng ... l#keepalive_timeout' u  w! E7 W. l9 J$ W
nginx優化:http://www.jianshu.com/p/2184654ba4b27 ^( k1 `7 i1 A' B
gzip壓縮功能以減少網路傳輸檔案大小:http://wenzhixin.net.cn/2013/11/10/server_gzip_on  v6 U. `  F1 ~
1 P( k1 B( h/ T" m. Y+ |

/ @# V# p. u# Z0 s  n1 U# P- c9 q. R$ Z
* T1 z: U: {) |1 b. ~* u# ]# ]% t- U# y. r





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