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

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

作者: IT_man    時間: 2016-10-1 22:08
標題: nginx優化(針對nginx.conf)
以CentOS 之 nginx的設定檔是在 /etc/nginx/nginx.conf: D3 U3 C: A+ a/ z8 T6 m  Q
一般來說 nginx 配置文件中對優化比較有作用的為以下幾項:
$ ^6 m6 t- N/ i) m* S0 x! ^. \  U& @worker_processes 8;
% V# B' j  L2 j% V. o* v' Z5 ~3 dnginx 進程數,建議按照 cpu 數目來指定,一般為它的倍數。8 E' N- q$ S9 f; I- {) I
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;' i8 A; W  J4 _0 M7 _
為每個進程分配 cpu,上例中將 8 個進程分配到 8 個 cpu,當然可以寫多個,或者將一個進程分配到多個 cpu。0 ]# Y0 k' u' r& {5 ^
worker_rlimit_nofile 102400;
7 |9 D6 V# z, E* [這個指令是指當一個 nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與 nginx 進程數
; w: z8 {4 e  d- b5 h( h相除,但是 nginx 分配請求並不是那麼均勻,所以最好與 ulimit -n 的值保持一致。7 O7 g& O- P/ h% D
use epoll;, R" a2 C; W1 b9 g3 X5 ]5 l3 ]5 u7 f
使用 epoll 的 I/O 模型,這個不用說了吧。
: S( T& \# b# k) q! s* Wworker_connections 102400;
3 D) E4 J$ y* r  C- q每個進程允許的最多連接數,理論上每台 nginx 服務器的最大連接數為 worker_processes*worker_connections。" z) ]% I0 |/ d3 S. P+ P) l% q
keepalive_timeout 60;. M: o) p" X" v0 g0 t
keepalive 超時時間。
) U. X$ v4 ^7 S; q3 Tclient_header_buffer_size 4k;# s- h7 V' ~) s0 J3 ?8 _
客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過 1k,不過由7 T# |$ x8 c! z% F3 y: }
於一般系統分頁都要大於 1k,所以這裡設置為分頁大小。分頁大小可以用命令 getconf PAGESIZE 取得。! n7 y" p3 n- h3 E* F1 Y
open_file_cache max=102400 inactive=20s;
) n6 ~" Y2 M+ E2 @$ @! K  G這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時8 i$ j1 U( ~2 F( `
間文件沒被請求後刪除緩存。5 @( f1 `6 n$ R/ F0 F% d* F
open_file_cache_valid 30s;
6 w' y+ O# N, B/ [4 W, o這個是指多長時間檢查一次緩存的有效信息。
/ M4 v1 N7 A. @% Zopen_file_cache_min_uses 1;
2 f. X, r) `. {% m5 i8 topen_file_cache 指令中的 inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打
- X( r' |% K/ b3 W2 }3 Q( b2 ]開的,如上例,如果有一個文件在 inactive 時間內一次沒被使用,它將被移除。
. ^1 F& r; \) h+ U: q" K( v
! R! R6 ?9 i" S; b- O0 O# {, g# u3 n1 V4 k9 q: }
關於內核參數的優化:9 Z' I( F/ C1 p
net.ipv4.tcp_max_tw_buckets = 6000
& w) `* i( I& f2 A" {: T% N' ]timewait 的數量,默認是 180000。' {! s/ g* `4 r# L8 k1 q2 [
net.ipv4.ip_local_port_range = 1024 650004 N/ [. d0 p9 p) X/ |6 S5 Z& H
允許系統打開的端口範圍。$ E; T' n: Z' G# K/ ?" f
net.ipv4.tcp_tw_recycle = 11 N7 ^. z4 F' I5 e; X' o! |' S
啟用 timewait 快速回收。
9 Z9 i" S% v0 m) Dnet.ipv4.tcp_tw_reuse = 18 N9 g+ W5 N1 c. \5 P- c
開啟重用。允許將 TIME-WAIT sockets 重新用於新的 TCP 連接。9 _! N; S& ^5 C- f. }
net.ipv4.tcp_syncookies = 1
- j3 `5 @$ a9 _+ x9 I$ G& k開啟 SYN Cookies,當出現 SYN 等待隊列溢出時,啟用 cookies 來處理。
. h, F& I& J! k: w( y! H) Cnet.core.somaxconn = 262144! X7 e% s7 z, C' P
web 應用中 listen 函數的 backlog 默認會給我們內核參數的 net.core.somaxconn 限製到 128,而 nginx 定義的9 q0 t* V; }; e$ d
NGX_LISTEN_BACKLOG 默認為 511,所以有必要調整這個值。
" B8 ?. q3 Z% U$ _8 `net.core.netdev_max_backlog = 262144! E4 ~% n( s  _" h
每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。1 L7 o7 k' {" R
net.ipv4.tcp_max_orphans = 262144
% _, f6 i. C- K% _; T系統中最多有多少個 TCP 套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤兒連接將即刻被復位並打2 {/ k6 A# W2 _
印出警告信息。這個限制僅僅是為了防止簡單的 DoS 攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值
8 Y7 G; I+ {' D% H(如果增加了內存之後)。2 K( ?. {* |3 t
net.ipv4.tcp_max_syn_backlog = 262144; L3 t* s$ X2 U! Q
記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對於有 128M 內存的系統而言,缺省值是 1024,小內存的系
) V/ _; x- A1 d( m7 b統則是 128。
) s& W, q* c  z/ o0 d  Znet.ipv4.tcp_timestamps = 0
7 z- T# Z: E6 A  m- t時間戳可以避免序列號的捲繞。一個 1Gbps 的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的
& \2 `* B# v3 H: N: J  H( X; L, R4 T& n數據包。這裡需要將其關掉。3 @* v& k8 V# X! J
net.ipv4.tcp_synack_retries = 1
1 h$ g$ @. h1 G* I/ |7 p為了打開對端的連接,內核需要發送一個 SYN 並附帶一個回應前面一個 SYN 的 ACK。也就是所謂三次握手中的第二次
$ G; M$ w. u1 `& N' H2 A, E握手。這個設置決定了內核放棄連接之前發送 SYN+ACK 包的數量。
. c* @6 G& B4 @' X5 K; _* ]: t8 Fnet.ipv4.tcp_syn_retries = 1- l- J$ M& N/ j! R. t
在內核放棄建立連接之前發送 SYN 包的數量。# Z8 w9 ^" y/ E& D
net.ipv4.tcp_fin_timeout = 1
4 O/ Y5 A6 E& N0 o如果套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間。對端可以出錯並永遠不關閉連接,甚
* Y7 n: L% D) k. _/ V9 |# o至意外當機。缺省值是 60 秒。2.2 內核的通常值是 180 秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕% C4 G' }, ?0 z: V4 i/ a7 I& k
載的 WEB 服務器,也有因為大量的死套接字而內存溢出的風險,FIN- WAIT-2 的危險性比 FIN-WAIT-1 要小,因為它最0 b) x3 D$ Q3 J( ?* a: F( Q2 c
多只能吃掉 1.5K 內存,但是它們的生存期長些。
& j' k# Z; w) k+ w( K, Onet.ipv4.tcp_keepalive_time = 30' v/ W6 ^4 S( Q9 G) ~! a) T
當 keepalive 起用的時候,TCP 發送 keepalive 消息的頻度。缺省是 2 小時。! p" x9 b+ }" |  g
0 q  e' \7 p( D5 P
! O7 f. u: R" B
下面貼一個完整的內核優化設置:
7 {, x; A/ l& C* \' i3 Mnet.ipv4.ip_forward = 0* a9 W' ]0 Q- q3 N. j8 q$ I5 F3 J
net.ipv4.conf.default.rp_filter = 1
& k1 ]. I, D& s5 U9 h/ d2 {net.ipv4.conf.default.accept_source_route = 04 @0 d2 U! l, t& u, p( g( H0 }; P
kernel.sysrq = 0
$ l$ u$ t0 Z* N7 Z2 ?kernel.core_uses_pid = 1
; h2 N( F+ ~3 Xnet.ipv4.tcp_syncookies = 1. u& ^& r1 u9 ]: _% E. n" t
kernel.msgmnb = 65536
+ @! x5 S. l6 T$ x* Zkernel.msgmax = 655360 N3 _) W* u4 {" F2 ?( D
kernel.shmmax = 68719476736# S% |  e& j( P; _, X
kernel.shmall = 4294967296: F, M  Y3 ]8 ?& y
net.ipv4.tcp_max_tw_buckets = 6000
$ D$ `* S  G8 K: G; U" d0 A/ ]! onet.ipv4.tcp_sack = 1! W2 T. G8 y7 t- y
net.ipv4.tcp_window_scaling = 14 u3 k5 D+ w, _
net.ipv4.tcp_rmem = 4096 87380 4194304/ l7 w" X5 \# q; ]1 ?' ]8 y) C
net.ipv4.tcp_wmem = 4096 16384 4194304
0 [8 }+ e6 A! Z( g% x8 Ynet.core.wmem_default = 83886084 O" m7 N6 w; D) `8 i. c6 K6 \
net.core.rmem_default = 83886080 S& v8 }# Y2 W, K' I1 Y7 G
net.core.rmem_max = 16777216
3 Q# ~+ B6 U& mnet.core.wmem_max = 16777216
  ^7 ^' E1 g0 \' g" J+ wnet.core.netdev_max_backlog = 262144
0 j1 H( k9 {$ U; ?# D! Y5 jnet.core.somaxconn = 262144
8 Z7 d' v4 `4 ]7 i8 xnet.ipv4.tcp_max_orphans = 3276800
2 k# ^; R- Q$ I. Tnet.ipv4.tcp_max_syn_backlog = 2621446 n6 L8 f* r' O4 J
net.ipv4.tcp_timestamps = 0
* {: N' j- {/ S0 }+ b3 {5 H) P( Lnet.ipv4.tcp_synack_retries = 1: H( c+ L' u) {
net.ipv4.tcp_syn_retries = 1* m! R1 t. c" l( ?, J# z
net.ipv4.tcp_tw_recycle = 1# p4 c. R. a9 X9 B
net.ipv4.tcp_tw_reuse = 1
. r: h# p% p# C' V4 unet.ipv4.tcp_mem = 94500000 915000000 927000000
. |4 q: s3 {# c! Hnet.ipv4.tcp_fin_timeout = 1
1 r; d3 P1 R1 `0 h0 nnet.ipv4.tcp_keepalive_time = 30
; y8 \- U. r. L8 R- W$ h& l" Tnet.ipv4.ip_local_port_range = 1024 65000* H6 j$ }3 j# }& [

: {! \$ e) r% }3 v" T0 h  Z
5 H7 d2 E, S& }& }( A下面是一個簡單的 nginx 配置文件:nginx.conf
1 V$ C3 M3 @/ ~4 F! ?user www www;: h1 x" L: j. P  ?
worker_processes 8;4 z, z+ j! G- c
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;
7 D* w0 F* z& U3 y) X! Verror_log /www/log/nginx_error.log crit;( ?% S1 e( l$ a1 G8 h+ G$ `$ {
pid /usr/local/nginx/nginx.pid;4 K7 r) s5 C0 f* W% W3 M: i
worker_rlimit_nofile 204800;
. b9 H# J9 R$ S; Y2 b7 ~events
+ T2 \4 b% P4 E: l# I; @. m{! s4 e% m& e2 J- h
  use epoll;
1 `1 a8 N1 J1 |: p( ?2 V2 L  worker_connections 204800;
7 g/ L  X/ t, }5 k: |}0 P; K2 @* @( m1 [& [# p" g; V4 {
http
5 K" z& g; t/ U{8 I" m% E* Y% _0 Y2 A+ C) ?. \- I4 C2 _
include mime.types;$ ^+ r; k% x& S: `2 T
default_type application/octet-stream;
3 L5 O- ~) ^1 g; y charset utf-8;" x0 V, S6 Y% ~, Z$ ~. T
server_names_hash_bucket_size 128;. Y9 {. d, @  T
client_header_buffer_size 2k;
/ }+ V% C2 a, }7 v large_client_header_buffers 4 4k;* h- F2 [: @' B* ^1 A' J- m1 z7 N
client_max_body_size 8m;
, E4 t: t; R% ?9 s) K+ [6 i sendfile on;! G. \; _) j& f1 ]# q7 u
tcp_nopush on;
5 |$ [2 H& ]* z* e$ r" K keepalive_timeout 60;
. D' f; F. h1 Q* ]; ^ fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
" j' ]$ A8 k, l0 {- E) i fastcgi_connect_timeout 300;
. h, h3 v; b7 R! ? fastcgi_send_timeout 300;8 x9 }0 X' \! y* E
fastcgi_read_timeout 300;
' f# A, ~* ]- t9 V5 a, N) q, m: z fastcgi_buffer_size 16k;
' Y( M) J$ F, A: X, z fastcgi_buffers 16 16k;9 B/ }: n; W0 p  c
fastcgi_busy_buffers_size 16k;
8 l- |2 F/ u/ m0 ?: H8 L$ W9 O7 c fastcgi_temp_file_write_size 16k;
2 y* g' P# D) }6 W$ k( v! c- e fastcgi_cache TEST;
4 O8 v/ W) H' u: }+ Z4 B fastcgi_cache_valid 200 302 1h;; c/ q1 R1 R% G! e
fastcgi_cache_valid 301 1d;7 z: V+ }- I9 O
fastcgi_cache_valid any 1m;
* ~8 Y1 s0 F# L, y* k" @ fastcgi_cache_min_uses 1;
0 }( ?$ R& o- p! `2 A! z1 r" |5 C fastcgi_cache_use_stale error timeout invalid_header http_500;
) s. L' s: B7 H3 I) b. ^: S open_file_cache max=204800 inactive=20s;
* |7 E" t, V2 R4 X) i open_file_cache_min_uses 1;
! v' r4 a7 `0 I! f1 Q9 e open_file_cache_valid 30s;6 u( U% H9 {1 _  e) G, S
tcp_nodelay on;
, b0 p! v* e0 _8 t  R1 e gzip on;6 O" O0 m/ U1 ^/ c" u# ~
gzip_min_length 1k;
) O' f# Z* i: r" m  Y* k0 s/ L gzip_buffers 4 16k;
5 m6 t# w/ |* ^# x gzip_http_version 1.0;9 x( I3 H; C8 d9 G4 v& m! _  O6 a. J
gzip_comp_level 2;
1 I5 s4 c! D: c- Q! Z gzip_types text/plain application/x-javascript text/css application/xml;
) `6 J7 L  O  X9 r3 Q- [+ u1 `8 } gzip_vary on;
; f8 C8 \% S( ?0 R% g. v5 H# ] server: q8 ^- j/ N5 z) E8 \: {1 G8 C$ W
{
7 Q3 K4 T* y9 L( Y listen 8080;
/ \% F1 }/ u: E5 j server_name backup.aiju.com;
/ H6 Y& y+ }) V. } index index.php index.htm;
* ?0 y' N9 J0 X' A root /www/html/;
+ c# g; @% h  Q- f7 Z location /status/ U0 j- N3 \/ W; @+ u* [3 }
{
; o! Z- V: M  ~' S& e' u0 L stub_status on;
) z3 v1 ^3 ?: k- N }8 `& k! j; t/ J
location ~ .*\.(php|php5)?$6 o8 P: v5 R3 t# v
{
1 |& `4 ~  X, w4 Q fastcgi_pass 127.0.0.1:9000;( a2 @/ ]% ^' y3 O: q# R
fastcgi_index index.php;
$ N: |9 k! W7 D% h: V: J0 P5 Q! A include fcgi.conf;$ |1 V* p" B1 S" q
}
# H( W8 w+ d- |6 r- p7 L location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$5 c' ~0 R; k# o' a
{
8 @+ c) z5 c- [8 Z% \* J- m expires 30d;* K& `% R: Z3 ?; N: C- V. J6 z
}
$ E4 N9 V# o" t! c: g* T log_format access '$remote_addr - $remote_user [$time_local] "$request" '
* C# T  G5 H6 h( O. ~ '$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';0 e: K$ ]& g* D9 F0 z: {. b' H* _
access_log /www/log/access.log access;
0 j. L$ J5 m( F! a }
+ {4 }) E0 B  b# D. w' A3 J}' q6 Q- N4 i2 l0 u2 j( L9 X( W% J

$ H7 {3 O* h& w' R5 e# j! S關於 FastCGI 的幾個指令:: {! l0 I5 r9 {/ X( y! J
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;; h0 F1 y9 K, U* L  T
這個指令為 FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。
7 X3 \2 g' F2 D( c4 Y& vfastcgi_connect_timeout 300;0 C8 A/ K1 [6 z' v+ |
指定連接到後端 FastCGI 的超時時間。
7 f( M3 u* E6 T7 }. mfastcgi_send_timeout 300;8 u- c$ G) S( N( ^$ t; q4 d
向 FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向 FastCGI 傳送請求的超時時間。# O) U8 j  p9 Q/ {
fastcgi_read_timeout 300;
+ l$ Y* n- f: H+ w接收 FastCGI 應答的超時時間,這個值是指已經完成兩次握手後接收 FastCGI 應答的超時時間。) e' R4 R6 s! u, _% G
fastcgi_buffer_size 16k;
. z1 U# e4 a' }! ~指定讀取 FastCGI 應答第一部分需要用多大的緩衝區,這裡可以設置為 fastcgi_buffers 指令指定的緩衝區大小,上面的
: N6 \; |# G$ `1 T  G9 k' h& [1 u8 k& u指令指定它將使用 1 個 16k 的緩衝區去讀取應答的第一部分,即應答頭,其實這個應答頭一般情況下都很小(不會超過# p: u# l' i% y( ~! \+ x1 }9 k
1k),但是你如果在 fastcgi_buffers 指令中指定了緩衝區的大小,那麼它也會分配一個 fastcgi_buffers 指定的緩衝區大
2 B3 }: i9 \. `$ _  S! D小去緩存。4 I. c0 U+ h6 O$ E/ E
fastcgi_buffers 16 16k;
# L# h( `) g4 x  m. m指定本地需要用多少和多大的緩衝區來緩衝 FastCGI 的應答,如上所示,如果一個 php 腳本所產生的頁面大小為 256k,8 T! p- Q% z1 o: _' k
則會為其分配 16 個 16k 的緩衝區來緩存,如果大於 256k ,增大於 256k 的部分會緩存到 fastcgi_temp 指定的路徑中,
! |. ^8 ?* e4 S( x7 c) B; T/ ?當然這對服務器負載來說是不明智的方案,因為內存中處理數據速度要快於硬盤,通常這個值的設置應該選擇一個你的- w2 @# p1 z; \- Z, \( t: S
站點中的 php 腳本所產生的頁面大小的中間值,比如你的站點大部分腳本所產生的頁面大小為 256k 就可以把這個值設$ r5 q# e. @1 z: b" n7 E% ^5 {# A
置為 16 16k,或者 4 64k 或者 64 4k,但很顯然,後兩種並不是好的設置方法,因為如果產生的頁面只有 32k,如果用 4
  x& j* X" f$ o. Z. x- l$ K0 N64k 它會分配 1 個 64k 的緩衝區去緩存,而如果使用 64 4k 它會分配 8 個 4k 的緩衝區去緩存,而如果使用 16 16k 則它
; s- W: u! [/ }+ Z& k5 B8 h會分配 2 個 16k 去緩存頁面,這樣看起來似乎更加合理。
  ~: O  [7 Z2 W" Gfastcgi_busy_buffers_size 32k;
' I4 Y# w$ I" U' h  _0 H: `1 X/ t這個指令我也不知道是做什麼用,只知道默認值是 fastcgi_buffers 的兩倍。
9 n; c  C  ?: }fastcgi_temp_file_write_size 32k;
% @. ^& [& N; m& N. J在寫入 fastcgi_temp_path 時將用多大的數據塊,默認值是 fastcgi_buffers 的兩倍。
* g2 c  r+ o$ V+ Tfastcgi_cache TEST
9 Q8 o0 e7 W3 c. Y; C9 l開啟 FastCGI 緩存並且為其製定一個名稱。個人感覺開啟緩存非常有用,可以有效降低 CPU 負載,並且防止 502 錯誤。% _) R+ V  ]+ B( X4 }
但是這個緩存會引起很多問題,因為它緩存的是動態頁面。具體使用還需根據自己的需求。3 C3 P) e" e+ [1 X* Z
fastcgi_cache_valid 200 302 1h;
9 Z1 @  e% I1 v" \  Efastcgi_cache_valid 301 1d;9 j! W  U7 W; u' X" B1 a  ]
fastcgi_cache_valid any 1m;
5 w% l) u0 s3 q4 x為指定的應答代碼指定緩存時間,如上例中將 200,302 應答緩存一小時,301 應答緩存 1 天,其他為 1 分鐘。% a5 ?( \; m/ v3 `8 P+ ~2 S: w2 h
fastcgi_cache_min_uses 1;
# W3 b% h( M4 b緩存在 fastcgi_cache_path 指令 inactive 參數值時間內的最少使用次數,如上例,如果在 5 分鐘內某文件 1 次也沒有被: H8 }1 R/ z/ M5 `, [* h
使用,那麼這個文件將被移除。* a# n. ?  c% O, }1 g
fastcgi_cache_use_stale error timeout invalid_header http_500;
% ^- v1 B+ b2 _2 J不知道這個參數的作用,猜想應該是讓 nginx 知道哪些類型的緩存是沒用的。
% Z& b$ C1 ~; T5 N3 k以上為 nginx 中 FastCGI 相關參數,另外,FastCGI 自身也有一些配置需要進行優化,如果你使用 php-fpm 來管理
  q, A5 y! w$ \FastCGI,可以修改配置文件中的以下值:
* {/ p) N( Q+ W( X2 s, z+ c<value name="max_children">60</value>6 Q; R2 w9 q9 o0 b+ {7 o7 J' [
同時處理的並發請求數,即它將開啟最多 60 個子線程來處理並發連接。/ I0 P! R" U9 ~  \
<value name="rlimit_files">102400</value>- l) H8 N: X1 O5 W3 U
最多打開文件數。
3 m: D$ h1 q8 c: l/ v% T  U+ h+ u<value name="max_requests">204800</value>: z: Q# h9 n. g$ h! y  U3 k
每個進程在重置之前能夠執行的最多請求數。# g3 F! H8 D" x

1 M7 [# _. B; y3 s8 G
7 Z: E; }" g: V' |& p* ?6 o參考資料:& D" ^1 \$ n8 D- e' [
http://demo.ckan.org/dataset/daf ... /download/nginx.pdf
* R) S" Q( ^4 e' fhttp://blog.chinaunix.net/u3/105004/showart_2087155.html
1 D: J! I5 ?% n9 Jhttp://nginx.179401.cn/
# g, m8 E3 E% Z% o( y9 {% f" Khttp://blog.s135.com/nginx_php_v5/: u; @! F6 f6 V  f; b" S5 p# z+ C
http://xyz.cinc.biz/2015/09/linux-nginx-php-fpm-connection.html- z$ g- y! M3 `' |" ]6 A0 }
https://www.netroby.com/view/3128
/ _) }  H& Q; a' \fastcgi 快取:) B5 ^' s! `  V$ h  Q5 p3 @) m' z
https://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/* h* N0 e& i% R( p: E$ U1 @+ s
其他:% K4 E% q. B& b* [) r1 _& ^+ V; B
nginx設定檔內參數的詳細說明: http://nginx.org/en/docs/http/ng ... l#keepalive_timeout
' b; H0 f8 z3 R+ ?3 p! @$ `nginx優化:http://www.jianshu.com/p/2184654ba4b2
/ u% P$ t% T$ a2 z) E+ ngzip壓縮功能以減少網路傳輸檔案大小:http://wenzhixin.net.cn/2013/11/10/server_gzip_on
+ Y* |  Y8 F7 j  c; V, E5 O
4 R! U/ n8 Y% u- ~
) b( q5 e" m0 G9 j$ q% v/ d
  z8 [1 J8 T1 r

0 M5 S; S. A: x+ P; j& b7 C3 _




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