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

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

作者: IT_man    時間: 2016-10-1 22:08
標題: nginx優化(針對nginx.conf)
以CentOS 之 nginx的設定檔是在 /etc/nginx/nginx.conf
* a- R8 {" ~# g5 T一般來說 nginx 配置文件中對優化比較有作用的為以下幾項:9 G9 O/ E0 r0 A& _) e  v* w" K
worker_processes 8;9 f: U% x! d0 }
nginx 進程數,建議按照 cpu 數目來指定,一般為它的倍數。
0 q" D5 d' i" k  r8 @worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;/ u* p3 f0 _8 l( h/ T+ C2 l5 q2 c
為每個進程分配 cpu,上例中將 8 個進程分配到 8 個 cpu,當然可以寫多個,或者將一個進程分配到多個 cpu。
# z, x9 M& O! A/ pworker_rlimit_nofile 102400;0 `! V% [. v5 i3 `2 K: Z+ v
這個指令是指當一個 nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與 nginx 進程數" }2 h. L  p" n, L2 m: E
相除,但是 nginx 分配請求並不是那麼均勻,所以最好與 ulimit -n 的值保持一致。2 H9 G5 C$ {' k) @3 D0 t( {
use epoll;
9 x3 u4 {' [4 Y" T4 ]" r) X使用 epoll 的 I/O 模型,這個不用說了吧。
/ k; z/ m+ F. P* L: v$ f  X! Jworker_connections 102400;( ?7 ]9 p0 b, I! B; l  q: j$ A
每個進程允許的最多連接數,理論上每台 nginx 服務器的最大連接數為 worker_processes*worker_connections。
) D' G" |1 ~! n; t9 Ikeepalive_timeout 60;* }( i6 N5 z: i! c/ H
keepalive 超時時間。. V+ Q- ~- ]( G5 S4 L
client_header_buffer_size 4k;! L* S9 G# o+ }' w3 @
客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過 1k,不過由
* _8 C+ b4 q$ P8 P, Q2 U+ m於一般系統分頁都要大於 1k,所以這裡設置為分頁大小。分頁大小可以用命令 getconf PAGESIZE 取得。
0 _4 H$ o$ O3 Z1 Zopen_file_cache max=102400 inactive=20s;
- T: ~( Z2 Q; H% E! A這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時9 Z- W5 O. W9 ]& k% Q
間文件沒被請求後刪除緩存。
: x( @. x. `4 p1 ~- W" T4 qopen_file_cache_valid 30s;
- ^( o7 ]: h  o這個是指多長時間檢查一次緩存的有效信息。  c- R: s8 t8 ~% R7 l0 I
open_file_cache_min_uses 1;- M2 M1 {& _& q  L; P" g% t8 i
open_file_cache 指令中的 inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打$ ]& }3 o6 j2 ]4 `
開的,如上例,如果有一個文件在 inactive 時間內一次沒被使用,它將被移除。
3 g' u  [2 p0 p/ v" ~) \1 a# |; D* E( d, n, i0 r1 t: J
# g- {  z( V0 E1 ]5 b% D2 h
關於內核參數的優化:1 Q" f) h6 @: M
net.ipv4.tcp_max_tw_buckets = 6000$ m- s# `% |$ o8 k3 T" c
timewait 的數量,默認是 180000。
; d# a8 R  x8 z3 t$ [net.ipv4.ip_local_port_range = 1024 650006 Z" }- u5 h# T; J; r/ y/ N
允許系統打開的端口範圍。
: D; i0 ]) F& @* W- @" Pnet.ipv4.tcp_tw_recycle = 1/ R) `) c( _0 T" C6 _" o2 y& _
啟用 timewait 快速回收。
0 w( u# a$ a) o/ ~$ cnet.ipv4.tcp_tw_reuse = 1- S: x8 s; s" A5 r' _
開啟重用。允許將 TIME-WAIT sockets 重新用於新的 TCP 連接。
; S5 U; Y. ]7 L9 Cnet.ipv4.tcp_syncookies = 1
3 a) C* K# ?1 S9 C! _; s2 M開啟 SYN Cookies,當出現 SYN 等待隊列溢出時,啟用 cookies 來處理。6 P4 ^( S+ v5 R7 T
net.core.somaxconn = 262144+ t# I$ L1 V1 n) @9 T0 }( W
web 應用中 listen 函數的 backlog 默認會給我們內核參數的 net.core.somaxconn 限製到 128,而 nginx 定義的& p  T) N5 I3 l
NGX_LISTEN_BACKLOG 默認為 511,所以有必要調整這個值。- F1 s8 F/ u/ M
net.core.netdev_max_backlog = 2621442 C7 _, J/ D  n4 W6 @3 _, G
每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。
( }5 Z* W1 J, [1 n. U: t8 Mnet.ipv4.tcp_max_orphans = 262144: Z4 `: }  H0 s
系統中最多有多少個 TCP 套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤兒連接將即刻被復位並打( H1 s7 E% M: {+ w; F9 F; ^! B
印出警告信息。這個限制僅僅是為了防止簡單的 DoS 攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值
: f" A8 j3 [8 _+ z1 I' {/ ~* h(如果增加了內存之後)。! E; J/ a  t7 |. H; j; V; K
net.ipv4.tcp_max_syn_backlog = 262144
. l/ J9 g6 }! l( g; x' M: c! }記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對於有 128M 內存的系統而言,缺省值是 1024,小內存的系
: o/ N- n1 w6 b! B6 M. T9 f, v統則是 128。. I8 ~" u3 `$ a, h9 o1 v
net.ipv4.tcp_timestamps = 0; Q% w' G  T  v( z
時間戳可以避免序列號的捲繞。一個 1Gbps 的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的
: A1 z9 B9 _1 J' R, L數據包。這裡需要將其關掉。
$ v" i  o# D0 v8 D$ p/ \net.ipv4.tcp_synack_retries = 1& o3 t9 c( T' c! M/ p/ f( b
為了打開對端的連接,內核需要發送一個 SYN 並附帶一個回應前面一個 SYN 的 ACK。也就是所謂三次握手中的第二次
8 T% n3 l- L/ E- r& w! D握手。這個設置決定了內核放棄連接之前發送 SYN+ACK 包的數量。
  r  c/ u# @6 H6 fnet.ipv4.tcp_syn_retries = 11 ], d% m: x/ R$ i& d5 N3 d
在內核放棄建立連接之前發送 SYN 包的數量。6 p/ m$ v. E% _- }2 G- H+ ?* I
net.ipv4.tcp_fin_timeout = 1+ ^! ^: T1 h2 X- o" d* y$ ?5 d* g( P5 X
如果套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間。對端可以出錯並永遠不關閉連接,甚
  h: a4 v* A+ L6 B/ m/ A至意外當機。缺省值是 60 秒。2.2 內核的通常值是 180 秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕
( ^- \/ T5 v" ^  O載的 WEB 服務器,也有因為大量的死套接字而內存溢出的風險,FIN- WAIT-2 的危險性比 FIN-WAIT-1 要小,因為它最, c2 ~$ U9 L( u9 }0 y! U, w
多只能吃掉 1.5K 內存,但是它們的生存期長些。
- M" C) r- M5 C* Gnet.ipv4.tcp_keepalive_time = 309 X6 k( K) T: I. {- b' {
當 keepalive 起用的時候,TCP 發送 keepalive 消息的頻度。缺省是 2 小時。4 S+ x+ a  e- y/ r% M1 [  e3 ^

2 d: N6 J2 B4 M: T" e. }! q( l8 x0 D) f
下面貼一個完整的內核優化設置:, V! L; r3 s2 P3 r$ }8 n6 p( @1 Q
net.ipv4.ip_forward = 0# ]9 q. \- ^+ ?
net.ipv4.conf.default.rp_filter = 12 g% e! n) P( X& N8 g
net.ipv4.conf.default.accept_source_route = 01 d  O2 T' Z5 g8 H: U, p
kernel.sysrq = 0
+ C7 I. Q8 n7 C5 D5 ~% c$ rkernel.core_uses_pid = 10 v/ C3 t1 h3 v, }, q
net.ipv4.tcp_syncookies = 1
0 Y4 `' @3 p4 @! v6 Xkernel.msgmnb = 65536" L. j  U+ p9 C) i+ a, s
kernel.msgmax = 65536
' V& H- @* U+ l1 {4 V  J( Nkernel.shmmax = 68719476736
# C) t! Y1 x% Y- G" Vkernel.shmall = 4294967296
  w( {" ?# D+ k$ Rnet.ipv4.tcp_max_tw_buckets = 6000) s. Z8 v# p, O5 ^) G/ O
net.ipv4.tcp_sack = 1
7 p/ L$ p  I" Z" E6 Onet.ipv4.tcp_window_scaling = 13 v8 i1 O: Q5 }/ @
net.ipv4.tcp_rmem = 4096 87380 4194304
. p% `* c7 g0 W8 }net.ipv4.tcp_wmem = 4096 16384 41943044 m0 z5 _, g  y8 |
net.core.wmem_default = 8388608
0 u5 d6 a  z2 _, znet.core.rmem_default = 8388608( @* ^) f/ |( `3 Z  ~5 w5 Y" v, l: X
net.core.rmem_max = 16777216( [8 Q! _6 c3 ]! l
net.core.wmem_max = 16777216
% i& U5 O9 w5 f! B+ D, tnet.core.netdev_max_backlog = 262144
! \) n2 k% _4 t9 y" ~net.core.somaxconn = 262144
+ |1 b5 `, ?( G. C! m3 Mnet.ipv4.tcp_max_orphans = 32768009 ]' A1 ]% T3 v" ?+ z9 [
net.ipv4.tcp_max_syn_backlog = 262144
+ o- B1 T9 e. G8 v- G3 xnet.ipv4.tcp_timestamps = 0
7 {/ ]' Y' ?# u3 Jnet.ipv4.tcp_synack_retries = 16 C( Z+ \" V+ o
net.ipv4.tcp_syn_retries = 1
4 A% W, i& ~* K/ inet.ipv4.tcp_tw_recycle = 1
2 i  K, r( P/ u9 j- P' onet.ipv4.tcp_tw_reuse = 1$ q+ e* a! H: Z5 v4 k
net.ipv4.tcp_mem = 94500000 915000000 927000000+ [8 w# f" Y* L$ |6 ?
net.ipv4.tcp_fin_timeout = 15 o1 L1 {' n( m8 R) p+ `' a5 v6 f; m
net.ipv4.tcp_keepalive_time = 30. I! [5 u3 Q% o4 R0 t
net.ipv4.ip_local_port_range = 1024 65000! b6 V9 e# y8 i$ S( m5 x

/ I7 N7 ~! G  _2 Q4 m
6 m6 x$ Z  S# z$ b下面是一個簡單的 nginx 配置文件:nginx.conf
2 m- f! V" c+ l5 juser www www;9 I6 @2 U( a+ D+ E! A! k
worker_processes 8;
  Y/ J! C* O7 G+ u1 I7 yworker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;  j3 ]$ ?) e9 b3 j5 ^: c' _5 X& ?
error_log /www/log/nginx_error.log crit;$ H' Z# b, g8 ~1 b) }- o- ~
pid /usr/local/nginx/nginx.pid;
4 u: Z& d/ c2 o  a" kworker_rlimit_nofile 204800;- }* n  A0 A( q  R9 \
events+ \3 O/ U8 A' Z4 h+ \7 o
{: ]5 c  l: D: `; k" U( W; L: o9 \
  use epoll;
$ ]8 c' q: u, ]3 C, v) |  worker_connections 204800;, S6 b0 R' v9 [
}. p6 B" {! N" w& B. R, v, F
http7 A9 I4 ~  w8 X
{8 Y2 |; R$ e& D; B6 F7 V
include mime.types;
' Y0 a0 [0 c7 n- E, E+ A$ F: ? default_type application/octet-stream;' h3 Z2 H" S- C: r  J; F# m; i( A
charset utf-8;" ^" O3 o, o, n8 H% K4 F
server_names_hash_bucket_size 128;# G( c! H2 \! c. k1 x1 k) n
client_header_buffer_size 2k;
3 E5 I0 S2 K/ P' i' i% ~ large_client_header_buffers 4 4k;
+ X, k; o7 E; S% W client_max_body_size 8m;
/ I2 V2 F. \  _  e sendfile on;+ h% _" M: c( S
tcp_nopush on;: P5 E/ f- {& X
keepalive_timeout 60;
9 F* @2 D. U& T4 [( S" s fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;7 R* _5 o- t. _: l; R/ p
fastcgi_connect_timeout 300;
/ U% G1 h1 T" T6 Q0 H3 | fastcgi_send_timeout 300;
$ b  \$ h' k# |+ `; L fastcgi_read_timeout 300;
+ u/ }5 Q" q% q, J$ a fastcgi_buffer_size 16k;) h1 z5 n2 v( X+ E" M6 c+ K
fastcgi_buffers 16 16k;
# P- ]& i+ ^. N5 o fastcgi_busy_buffers_size 16k;9 ?( F& d% l+ f; O/ }' y/ R1 U- V
fastcgi_temp_file_write_size 16k;) M; q7 `+ K% x# o% C5 x  d
fastcgi_cache TEST;
. ?; M% Q& a8 g9 c4 f2 \ fastcgi_cache_valid 200 302 1h;
$ q: C" Y1 c6 R# _6 ]0 o fastcgi_cache_valid 301 1d;
" r  z1 j$ c- u* Z fastcgi_cache_valid any 1m;' Z; E7 r7 A' M* S1 |2 u
fastcgi_cache_min_uses 1;
6 x& v& a' Q1 s! Y# q fastcgi_cache_use_stale error timeout invalid_header http_500;
) J) {" W7 u4 l5 P" l" L0 Y open_file_cache max=204800 inactive=20s;( r/ ~. F( \; w6 @7 v
open_file_cache_min_uses 1;
! `) k0 d$ d9 M5 s open_file_cache_valid 30s;4 ~/ P3 ^; N/ e
tcp_nodelay on;% _- M, g9 W2 v5 s  B- o: S
gzip on;
3 ?: k2 e% Z% T$ T* J gzip_min_length 1k;4 C) w: d, Z2 q$ j) Z
gzip_buffers 4 16k;/ b* l) z' P9 O% p- H
gzip_http_version 1.0;
4 J- k$ D+ r: j gzip_comp_level 2;4 {* O2 D4 L+ Q4 j8 R/ X1 {
gzip_types text/plain application/x-javascript text/css application/xml;
8 v  c8 g+ ]2 Q. H$ v9 y gzip_vary on;) C9 d8 O9 G6 G. b
server  z' ]8 u+ W5 r3 M- z
{; r! l6 M: m7 J
listen 8080;
1 G7 m/ ^# b" Q$ e8 D9 g# }4 C server_name backup.aiju.com;8 p9 f% M: z. I8 Y/ C* B
index index.php index.htm;: y% r9 P2 O* A# W
root /www/html/;, l3 ?( O: f) y; ]( E1 _6 V
location /status: x; g3 r: C( v8 ~
{
2 }8 p  e6 T7 \# k stub_status on;" `5 n4 t# P# \, ^/ C% J5 v5 h
}4 G1 t5 _- \! j/ G
location ~ .*\.(php|php5)?$
$ ~! R; D8 j/ H; J {
  R, g( W$ P3 g- f% n& A/ z fastcgi_pass 127.0.0.1:9000;
3 T# `8 n' v! W1 n/ J5 ^ fastcgi_index index.php;8 f1 B/ \- Z% i0 e: u* q* S, ^
include fcgi.conf;( Q- |1 K( v% S# ~5 h4 B5 ~
}
. ?! D- P6 X( [% G0 c3 f location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$) P: e- o( ]- K2 G5 k/ c8 g; c' F+ L
{
$ C$ |( J% U: h/ `/ O( y expires 30d;' f# E' o$ y' W0 N" O7 \
}
, }6 n+ }* E3 ?+ ` log_format access '$remote_addr - $remote_user [$time_local] "$request" '; Y' v$ t7 g  s/ r$ r( a/ p4 P
'$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';
8 n: Q; C. P" [ access_log /www/log/access.log access;
  C* |% u- E( x, N1 k0 |; { }
! ~, S! V. u$ h8 P) B}* ^: v$ y+ T9 t0 ^- v& d& Z

' j5 t  Z  l( U" t6 R* P關於 FastCGI 的幾個指令:
. |0 o( ]) Y! ?/ p1 ^; Kfastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;% H* w  x! G! O& T7 s, c( ?
這個指令為 FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。  X, y$ Z& B5 [, e* z5 q! q3 b$ Q
fastcgi_connect_timeout 300;
7 |0 [$ \6 i9 ~# ?' g指定連接到後端 FastCGI 的超時時間。1 I/ X2 d# W/ r0 [$ t
fastcgi_send_timeout 300;
* i+ K; Z- _+ H, |向 FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向 FastCGI 傳送請求的超時時間。- Y, W: z  F2 Y$ x6 x8 r; s$ E
fastcgi_read_timeout 300;4 G( [" S- N9 w6 y! N: A& m6 b
接收 FastCGI 應答的超時時間,這個值是指已經完成兩次握手後接收 FastCGI 應答的超時時間。4 {+ I- F% D; N4 ^# K1 P; a
fastcgi_buffer_size 16k;2 G, {! v+ W! q  t2 C
指定讀取 FastCGI 應答第一部分需要用多大的緩衝區,這裡可以設置為 fastcgi_buffers 指令指定的緩衝區大小,上面的
5 W. @7 E7 C' X, K! s& c指令指定它將使用 1 個 16k 的緩衝區去讀取應答的第一部分,即應答頭,其實這個應答頭一般情況下都很小(不會超過9 k& Y& K, p! W$ Z0 U% [8 ~" z' K$ |
1k),但是你如果在 fastcgi_buffers 指令中指定了緩衝區的大小,那麼它也會分配一個 fastcgi_buffers 指定的緩衝區大  q0 c$ U. |* V9 n, p' P* T- E
小去緩存。6 b4 N! C2 c& z2 l
fastcgi_buffers 16 16k;9 @; ?, y/ ^% Q% i3 i- y
指定本地需要用多少和多大的緩衝區來緩衝 FastCGI 的應答,如上所示,如果一個 php 腳本所產生的頁面大小為 256k,
! W' i( f  o3 I( [1 @# e則會為其分配 16 個 16k 的緩衝區來緩存,如果大於 256k ,增大於 256k 的部分會緩存到 fastcgi_temp 指定的路徑中," E! _/ Q2 o0 a; r2 ]) f9 m
當然這對服務器負載來說是不明智的方案,因為內存中處理數據速度要快於硬盤,通常這個值的設置應該選擇一個你的
. d) z: T! W% n8 d6 S" t站點中的 php 腳本所產生的頁面大小的中間值,比如你的站點大部分腳本所產生的頁面大小為 256k 就可以把這個值設4 i% c8 I% z" X$ w7 }, T
置為 16 16k,或者 4 64k 或者 64 4k,但很顯然,後兩種並不是好的設置方法,因為如果產生的頁面只有 32k,如果用 47 z, O9 m9 I, r- v" s/ m
64k 它會分配 1 個 64k 的緩衝區去緩存,而如果使用 64 4k 它會分配 8 個 4k 的緩衝區去緩存,而如果使用 16 16k 則它$ A) G) f& L; a, S2 v( F
會分配 2 個 16k 去緩存頁面,這樣看起來似乎更加合理。
6 `; |" q* u" A3 Zfastcgi_busy_buffers_size 32k;. R# M( P/ @1 ~. c1 T0 W) {
這個指令我也不知道是做什麼用,只知道默認值是 fastcgi_buffers 的兩倍。2 D' c# `3 B1 d+ L& R; Y
fastcgi_temp_file_write_size 32k;% D8 e* x0 X3 q% ?; l+ p5 |2 ~
在寫入 fastcgi_temp_path 時將用多大的數據塊,默認值是 fastcgi_buffers 的兩倍。% y; W) ^  R, I* I5 d7 |+ t
fastcgi_cache TEST0 ], V! Y4 Y- ?
開啟 FastCGI 緩存並且為其製定一個名稱。個人感覺開啟緩存非常有用,可以有效降低 CPU 負載,並且防止 502 錯誤。( [" M7 Z6 R/ c0 e: N
但是這個緩存會引起很多問題,因為它緩存的是動態頁面。具體使用還需根據自己的需求。
  T/ |# P6 l  X9 dfastcgi_cache_valid 200 302 1h;; M0 W; ?. E0 n3 t0 h: E
fastcgi_cache_valid 301 1d;+ V: ]: U, b- E4 P/ E7 {. Z& A
fastcgi_cache_valid any 1m;
9 q% N$ H8 k" b4 p0 n為指定的應答代碼指定緩存時間,如上例中將 200,302 應答緩存一小時,301 應答緩存 1 天,其他為 1 分鐘。! z& b& A* P% s( B
fastcgi_cache_min_uses 1;4 m, D2 A* {0 F+ U* U3 Q
緩存在 fastcgi_cache_path 指令 inactive 參數值時間內的最少使用次數,如上例,如果在 5 分鐘內某文件 1 次也沒有被
4 n) N( \+ X/ T. p" m& u使用,那麼這個文件將被移除。- c. O5 A, }" }' q, k& F7 a
fastcgi_cache_use_stale error timeout invalid_header http_500;
: D' }) ]  _! P不知道這個參數的作用,猜想應該是讓 nginx 知道哪些類型的緩存是沒用的。0 a0 ?; h% R9 ?- K
以上為 nginx 中 FastCGI 相關參數,另外,FastCGI 自身也有一些配置需要進行優化,如果你使用 php-fpm 來管理
$ A2 s- C  `/ Z: qFastCGI,可以修改配置文件中的以下值:4 [- Q* W$ y: P) {+ V" P+ O
<value name="max_children">60</value>
- H" m+ N$ r4 S' C同時處理的並發請求數,即它將開啟最多 60 個子線程來處理並發連接。
0 u/ f  ~% R6 n( Q3 Y<value name="rlimit_files">102400</value>
( r; X- ^. i# @. f( v最多打開文件數。/ n. Z. j* ?2 K2 W1 o7 m
<value name="max_requests">204800</value>" ?% l& C( f* \
每個進程在重置之前能夠執行的最多請求數。
4 @# B/ p* @  O* A- A3 F- }/ u. D& }7 B8 a; Z8 n8 k5 c

( f. }2 W, Y; w& q6 U參考資料:+ U* b% Q/ Z: v. n7 \
http://demo.ckan.org/dataset/daf ... /download/nginx.pdf
$ J! ~) x% X  d! y3 L- ahttp://blog.chinaunix.net/u3/105004/showart_2087155.html
2 O6 R- G* v7 Y8 xhttp://nginx.179401.cn/& w- y$ w$ _8 `; u& I2 l" {; L" E: X
http://blog.s135.com/nginx_php_v5/+ }4 u9 @! w8 H' {
http://xyz.cinc.biz/2015/09/linux-nginx-php-fpm-connection.html; |$ m) Q$ {, E4 y1 @4 R
https://www.netroby.com/view/3128# S5 c6 ~: l: Q. f
fastcgi 快取:9 {7 `. q' T0 _/ W( {0 G
https://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/: J  |! h; V* F( x$ F* {7 y$ _8 L* R
其他:
& P" `5 h. s: r" @6 }nginx設定檔內參數的詳細說明: http://nginx.org/en/docs/http/ng ... l#keepalive_timeout2 S) h$ f% @9 P: Y
nginx優化:http://www.jianshu.com/p/2184654ba4b2
. r0 q2 M+ n/ p& ]* j8 Tgzip壓縮功能以減少網路傳輸檔案大小:http://wenzhixin.net.cn/2013/11/10/server_gzip_on  _% @& ^& j  S. U0 K; p
2 Y5 Z/ r! T0 a/ T

# o; E0 t9 ^' n8 R) @2 p
1 K7 a  G4 k, S. \# Z6 s0 ]) }: u( h0 Y





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