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

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

作者: IT_man    時間: 2016-10-1 22:08
標題: nginx優化(針對nginx.conf)
以CentOS 之 nginx的設定檔是在 /etc/nginx/nginx.conf; ]# W' S' ^( X2 z9 D" o0 |, ]+ j
一般來說 nginx 配置文件中對優化比較有作用的為以下幾項:
: E  |$ f* t9 J. s- ]2 j) u9 J8 W' yworker_processes 8;
) M$ P) a9 S7 @" h6 {* G! z$ t* F+ pnginx 進程數,建議按照 cpu 數目來指定,一般為它的倍數。
# P! B( l) s9 P' a- ^" y6 @" Xworker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;0 \# a, C, L' a9 ~; Y$ B6 ?
為每個進程分配 cpu,上例中將 8 個進程分配到 8 個 cpu,當然可以寫多個,或者將一個進程分配到多個 cpu。
8 \  X$ f; A/ ^9 T, u6 eworker_rlimit_nofile 102400;  ^3 R7 A  C3 U8 O8 q4 u! t( v, a3 v; z
這個指令是指當一個 nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與 nginx 進程數' [) [' [8 i8 ^+ f( ]6 N# o6 `
相除,但是 nginx 分配請求並不是那麼均勻,所以最好與 ulimit -n 的值保持一致。/ ?8 B$ b/ y5 n! f: |1 M4 n
use epoll;
' {, e) j0 X2 x* y+ {/ u4 i1 D+ b使用 epoll 的 I/O 模型,這個不用說了吧。) C+ k4 g6 I6 q. d  U9 e
worker_connections 102400;  d* N) a( W) E9 ?% a% Z) S3 ?& {
每個進程允許的最多連接數,理論上每台 nginx 服務器的最大連接數為 worker_processes*worker_connections。
' Y$ N: H5 W# X  Y. ]' ^; dkeepalive_timeout 60;: C3 o* \* q, Y% @5 j% c4 d5 [
keepalive 超時時間。
; ]: D4 U8 b/ {; h) ^" hclient_header_buffer_size 4k;# Z- b/ z2 y  l
客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過 1k,不過由
$ s% n0 D* S$ i; Q. X於一般系統分頁都要大於 1k,所以這裡設置為分頁大小。分頁大小可以用命令 getconf PAGESIZE 取得。, _8 b3 G) x2 I& g8 T
open_file_cache max=102400 inactive=20s;
8 X# u+ q  G$ [5 M+ D: `這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時' S7 q# c) \- m3 a! ]
間文件沒被請求後刪除緩存。& y% K% N4 i1 M( C
open_file_cache_valid 30s;) V! [9 c2 d8 e) m
這個是指多長時間檢查一次緩存的有效信息。3 ^8 l: r! t2 [7 X# b& U4 P
open_file_cache_min_uses 1;: |+ n* c. Z% Q  _
open_file_cache 指令中的 inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打0 a9 O4 }; O+ Y8 k! Q6 O
開的,如上例,如果有一個文件在 inactive 時間內一次沒被使用,它將被移除。
+ I& W) n8 B: m* ~1 [
+ H8 K; \4 E. F( f/ r- M1 G9 k* W# C
關於內核參數的優化:
& C: X* e) }/ O4 \  \net.ipv4.tcp_max_tw_buckets = 6000" r  E7 }% D" ~
timewait 的數量,默認是 180000。
/ C; L: p- ~0 m6 _net.ipv4.ip_local_port_range = 1024 65000; v7 {; Q$ B* K9 @  R/ H3 b+ U
允許系統打開的端口範圍。4 s/ W$ N% C  |  }8 k0 @
net.ipv4.tcp_tw_recycle = 1- |2 t: e. u' A% f. U: F" T" T2 l! W
啟用 timewait 快速回收。5 }/ s& n* [' _  `. ~- g
net.ipv4.tcp_tw_reuse = 1
8 ]9 y8 p  w* F* L% j$ q1 Q' P開啟重用。允許將 TIME-WAIT sockets 重新用於新的 TCP 連接。
2 t7 b/ u$ ?9 e# x) `% jnet.ipv4.tcp_syncookies = 1$ i3 r  Q1 {: B  f# U* ]- M
開啟 SYN Cookies,當出現 SYN 等待隊列溢出時,啟用 cookies 來處理。
9 j5 y) \1 O5 {! \net.core.somaxconn = 2621448 N! m, L  I, w0 j; z
web 應用中 listen 函數的 backlog 默認會給我們內核參數的 net.core.somaxconn 限製到 128,而 nginx 定義的: J' }' H* Q: k" J8 ]9 @; a1 u
NGX_LISTEN_BACKLOG 默認為 511,所以有必要調整這個值。+ j' l+ E$ D" p" ]1 B& ~" r/ F, t& Y
net.core.netdev_max_backlog = 262144
5 }! p9 t8 j- c& U% e每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。- \$ ?) g0 u/ C+ ~# g( `  b3 A
net.ipv4.tcp_max_orphans = 262144; ~$ N- n' a. i& v& G1 @
系統中最多有多少個 TCP 套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤兒連接將即刻被復位並打2 Z; c' d6 {) x* G, h0 E+ P
印出警告信息。這個限制僅僅是為了防止簡單的 DoS 攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值. v% H% w( p- `& E
(如果增加了內存之後)。; n$ L& E* `) f8 ]& Z7 b
net.ipv4.tcp_max_syn_backlog = 262144/ ~* t; l( L9 a2 [7 ~8 i, o( G( t
記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對於有 128M 內存的系統而言,缺省值是 1024,小內存的系
- b# }% O. J. P" J! e統則是 128。
7 U6 A& T( ]$ O8 q0 fnet.ipv4.tcp_timestamps = 0
+ F9 `, V6 q3 [時間戳可以避免序列號的捲繞。一個 1Gbps 的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的0 m4 r, r4 t4 `- L6 o
數據包。這裡需要將其關掉。
2 b- G* q; C" M0 Onet.ipv4.tcp_synack_retries = 10 F; e4 [7 R, J7 M. \2 M: _  B
為了打開對端的連接,內核需要發送一個 SYN 並附帶一個回應前面一個 SYN 的 ACK。也就是所謂三次握手中的第二次* m% f1 W2 L) d! T4 U; F' w
握手。這個設置決定了內核放棄連接之前發送 SYN+ACK 包的數量。9 G9 z8 F& A2 ?+ v- p
net.ipv4.tcp_syn_retries = 1
- c, f: d- R% L  |# h在內核放棄建立連接之前發送 SYN 包的數量。/ ]% C9 c' r* {! S+ e: c
net.ipv4.tcp_fin_timeout = 1
6 L$ r8 i5 v& Z! e, o! {如果套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間。對端可以出錯並永遠不關閉連接,甚
+ n3 q4 G; z  o/ x( S至意外當機。缺省值是 60 秒。2.2 內核的通常值是 180 秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕' t# z2 @) |0 u
載的 WEB 服務器,也有因為大量的死套接字而內存溢出的風險,FIN- WAIT-2 的危險性比 FIN-WAIT-1 要小,因為它最
' t; K+ t# j) I多只能吃掉 1.5K 內存,但是它們的生存期長些。
; n, S0 |0 V" r1 anet.ipv4.tcp_keepalive_time = 30
# C: c) @* h6 c3 i當 keepalive 起用的時候,TCP 發送 keepalive 消息的頻度。缺省是 2 小時。
* a3 n0 m' h& g2 j) A' h7 a
$ L/ L* y$ V' T4 @4 l* J' n
* s/ ~  E* g! {+ D下面貼一個完整的內核優化設置:
7 v! g5 J4 l9 d3 U! l7 H0 nnet.ipv4.ip_forward = 0
& q9 I8 D4 d* \6 m) Snet.ipv4.conf.default.rp_filter = 1; u, v0 f0 p0 h' P
net.ipv4.conf.default.accept_source_route = 0% J* D* e; \$ n4 D1 H
kernel.sysrq = 0# I  E% P  ~2 P  h5 ~
kernel.core_uses_pid = 14 P( U9 a" i6 h. l7 C! @
net.ipv4.tcp_syncookies = 1
. A* B. O  y) d8 C% [; Lkernel.msgmnb = 655362 `* Y/ h8 F9 ^
kernel.msgmax = 65536
2 N& X! _$ t9 |# O( j. f9 Skernel.shmmax = 68719476736, h% {3 ~  k: Q4 Z& W
kernel.shmall = 4294967296
) X# R. ^9 W$ ]/ t% Z9 knet.ipv4.tcp_max_tw_buckets = 6000% l' d1 j7 x8 n' E" ^0 b- G
net.ipv4.tcp_sack = 1
( T& S$ \. n) h6 R8 Mnet.ipv4.tcp_window_scaling = 19 f3 f: ?, v0 y. S" ~+ ~% N
net.ipv4.tcp_rmem = 4096 87380 4194304# Z* z2 H+ Y1 i2 l: Q4 e' o1 G
net.ipv4.tcp_wmem = 4096 16384 4194304$ i' n2 l: J- a
net.core.wmem_default = 8388608
3 @; ~, K) Y5 n3 tnet.core.rmem_default = 8388608
6 ?9 ~  Z3 G9 y) u  \. ~net.core.rmem_max = 16777216
! z2 r& l" ^$ M1 s. ?5 Knet.core.wmem_max = 167772169 `4 w# C6 I  ^5 T* W
net.core.netdev_max_backlog = 262144' q  U. x4 s% v5 u' R4 z; q
net.core.somaxconn = 262144
; G3 ]% f5 t! l! s  Y' B' anet.ipv4.tcp_max_orphans = 3276800
$ R3 p' W& ]+ P9 j7 Qnet.ipv4.tcp_max_syn_backlog = 262144
+ B$ S8 d2 R! U5 P% ~# C0 }, ~net.ipv4.tcp_timestamps = 0
" T4 d" p, Q# ~) M+ Znet.ipv4.tcp_synack_retries = 1
8 y3 w0 g: {: R( j! Q  H5 Nnet.ipv4.tcp_syn_retries = 1- A; q+ }8 _7 T6 {: S( }
net.ipv4.tcp_tw_recycle = 1
4 y) `& ?5 V% |  [% ^) }net.ipv4.tcp_tw_reuse = 1" ?+ x! ^) b5 V# S
net.ipv4.tcp_mem = 94500000 915000000 927000000
9 }7 C$ d8 E# x% p5 Bnet.ipv4.tcp_fin_timeout = 12 v6 ^! M; ^- T! W/ D  z; D& O
net.ipv4.tcp_keepalive_time = 308 Z! v6 F; V# ~# e0 P- B
net.ipv4.ip_local_port_range = 1024 650004 L: _% T6 B: l5 f

: V1 b% R: y3 t0 l2 l( `* a+ h
% i. _  V: ~& e# W) Y下面是一個簡單的 nginx 配置文件:nginx.conf* |8 H" F  F( E+ V$ k
user www www;
" B& W. p; h! E9 p5 s, o+ Sworker_processes 8;
! N) v( O. i4 O% B% [. d& fworker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;& n: F) J! `7 w% X
error_log /www/log/nginx_error.log crit;, F5 I# d$ T; u7 T$ I5 ?3 Y8 V& ?( F6 y3 M
pid /usr/local/nginx/nginx.pid;
7 r4 ^# z* P5 r% }0 N+ @$ hworker_rlimit_nofile 204800;
- A4 X* f' t1 h0 r- Revents
) O- h# f- E1 A+ \3 \0 q- {{
4 O5 c- y! E8 l. q0 s2 U  use epoll;' t: d" q  Z, G$ V" w9 Y1 I
  worker_connections 204800;
" z; e$ M4 z  P. k& G8 m" y9 h7 p7 E}
' W5 h8 ]; y0 ]& Y$ v! V+ _http- Q  V# h8 h( Q
{
6 m6 e+ y7 P$ E7 ]( U, i3 w1 U9 q0 Z) e8 Uinclude mime.types;) L9 g! q+ n# y" `( u
default_type application/octet-stream;
: H! Q+ ^3 l9 N3 J+ `: ?. q charset utf-8;, q2 }( Q* d$ v+ v2 d! I
server_names_hash_bucket_size 128;  k+ r& a2 X: d
client_header_buffer_size 2k;
' A% P' v+ O& d3 u8 _0 n  l2 C large_client_header_buffers 4 4k;
8 B* F2 V3 u" s6 [' n client_max_body_size 8m;. x, k) X# H& I7 }& ?- Y3 z, ^
sendfile on;0 @* S* g' x# t, x' q! ?5 W
tcp_nopush on;4 x, W$ _; Y" A! Q1 ~5 X
keepalive_timeout 60;
8 K  S3 X7 a& `% a1 |( g+ ~; \ fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;4 C8 A; r- d. `% m
fastcgi_connect_timeout 300;" Q0 k; X1 E5 `
fastcgi_send_timeout 300;$ m. \# x, I* L3 m) x
fastcgi_read_timeout 300;( v  Y; l6 ]% [% O' u( _' L
fastcgi_buffer_size 16k;# @" i! y1 A  B" d2 t7 H
fastcgi_buffers 16 16k;  U) [- }! F0 M" C( M$ N
fastcgi_busy_buffers_size 16k;" F; }9 J# x; l
fastcgi_temp_file_write_size 16k;8 G! O3 g; l% d$ J% F
fastcgi_cache TEST;$ F7 O# V& I/ d8 u6 ]- [' S+ r2 k
fastcgi_cache_valid 200 302 1h;
! C7 P! c) [+ p" N' v8 [$ Z* T7 ]' @, S fastcgi_cache_valid 301 1d;! |$ ^+ g4 {1 C' A
fastcgi_cache_valid any 1m;( D) ^1 M/ V  P/ {1 `
fastcgi_cache_min_uses 1;; d6 Z  M6 c) M( h/ T9 f+ A5 q' b
fastcgi_cache_use_stale error timeout invalid_header http_500;
6 ?2 d1 w! y" Y- y open_file_cache max=204800 inactive=20s;
9 `, ]7 b3 Q0 I+ a0 s# U5 b open_file_cache_min_uses 1;* L: t1 w  _& f1 o' c- k. J
open_file_cache_valid 30s;
& l* l) |% E4 m! i1 E tcp_nodelay on;" e8 I( Y' ^9 I7 O
gzip on;
* ^2 a. r# B" Z' _1 r6 d gzip_min_length 1k;* A% j, L2 |, @: h" ^" S
gzip_buffers 4 16k;0 T) J1 V+ P4 ?0 J
gzip_http_version 1.0;
0 L' ~7 t7 [9 O, u* l1 e gzip_comp_level 2;
0 t7 b* B0 o1 r$ P, n0 M gzip_types text/plain application/x-javascript text/css application/xml;7 M2 x* s+ ]: q$ |* H
gzip_vary on;3 R+ O6 J+ h! i
server
7 f3 K) i* M1 I {
+ R# |) Y  ?) j1 r; y listen 8080;, K: l7 x/ z3 x! [' ~+ O% N
server_name backup.aiju.com;6 ]1 E" F1 W0 l, @: x! V: g5 o& m
index index.php index.htm;9 {! Z4 S! O9 I; w6 j% D
root /www/html/;
6 g+ _) r/ j. f( V; @( L6 k location /status$ D0 P; ~# l4 v1 K
{
# d! x* U6 S; \) f! v2 f% M! [) { stub_status on;
, G/ ]& F* i( G$ G" z. O- i) g }
* k( I& @* S6 n; @" S9 A9 N$ C3 W location ~ .*\.(php|php5)?$! n* \' C) K8 B
{
: A4 z0 w8 W5 {, ?, m fastcgi_pass 127.0.0.1:9000;
3 V2 U; V1 z- \& a' J fastcgi_index index.php;
* Q( T0 ^3 H# n$ D1 H/ G include fcgi.conf;
( h$ w9 Y! }7 r3 `5 ?! X+ h }, R0 t: h* _! D% Y
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$: ?8 d) `2 @8 ^) \- t5 j& W" r
{2 N$ p2 \% Q* {4 m0 N  v
expires 30d;  b* |5 v* a0 s
}
$ _- V4 z% a6 z% p& ]8 U log_format access '$remote_addr - $remote_user [$time_local] "$request" '
9 Q" ~- l5 Q; [  W, i0 | '$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';
: v: X, E4 I" r6 \0 u1 b7 s9 {$ Y5 K access_log /www/log/access.log access;2 u) q  n3 b5 }3 F4 F
}  e2 u7 I; z; i3 |2 R3 L
}  j  B- {; b: Q. p; a
6 G! H4 F) o# @% y; q+ }) @
關於 FastCGI 的幾個指令:
. v* r/ v8 Y% X3 r- w" Sfastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;. a/ b/ t4 K# b0 L/ g4 D
這個指令為 FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。0 \6 O  |; U, L$ s7 U
fastcgi_connect_timeout 300;
5 e4 p$ n0 y$ x9 X指定連接到後端 FastCGI 的超時時間。" ]  t4 Y& T$ Q- `) `
fastcgi_send_timeout 300;
+ C! k/ V- ?% p* X& U1 k  ]6 H( ?0 E向 FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向 FastCGI 傳送請求的超時時間。
7 K  V! Z! D1 [: v9 X8 x- j. o7 ?fastcgi_read_timeout 300;
. |1 X0 |( O8 o9 P7 V$ f: [0 R5 w& M接收 FastCGI 應答的超時時間,這個值是指已經完成兩次握手後接收 FastCGI 應答的超時時間。# n% C5 U, x2 A# e
fastcgi_buffer_size 16k;
3 t& Y& p$ z3 V, O指定讀取 FastCGI 應答第一部分需要用多大的緩衝區,這裡可以設置為 fastcgi_buffers 指令指定的緩衝區大小,上面的
' j7 r6 m/ {' b0 T" U7 U指令指定它將使用 1 個 16k 的緩衝區去讀取應答的第一部分,即應答頭,其實這個應答頭一般情況下都很小(不會超過
7 u4 K, Y- [7 \0 A! b1k),但是你如果在 fastcgi_buffers 指令中指定了緩衝區的大小,那麼它也會分配一個 fastcgi_buffers 指定的緩衝區大  w- c& u* i0 Q' |+ K- A! S# f
小去緩存。
8 d% D4 H; u' a$ L( n0 wfastcgi_buffers 16 16k;( b4 Z. d+ C+ e+ g9 Q1 ~
指定本地需要用多少和多大的緩衝區來緩衝 FastCGI 的應答,如上所示,如果一個 php 腳本所產生的頁面大小為 256k,8 }4 T* s2 Q* l# E$ _) J+ t5 L
則會為其分配 16 個 16k 的緩衝區來緩存,如果大於 256k ,增大於 256k 的部分會緩存到 fastcgi_temp 指定的路徑中,  Q3 h  h4 x, w
當然這對服務器負載來說是不明智的方案,因為內存中處理數據速度要快於硬盤,通常這個值的設置應該選擇一個你的" q; r7 O; N- C, E  x% i$ T
站點中的 php 腳本所產生的頁面大小的中間值,比如你的站點大部分腳本所產生的頁面大小為 256k 就可以把這個值設
. j( h& G, h! v, J2 j6 x置為 16 16k,或者 4 64k 或者 64 4k,但很顯然,後兩種並不是好的設置方法,因為如果產生的頁面只有 32k,如果用 4
. V6 D; O* s/ K0 [0 R7 i5 H# X5 b64k 它會分配 1 個 64k 的緩衝區去緩存,而如果使用 64 4k 它會分配 8 個 4k 的緩衝區去緩存,而如果使用 16 16k 則它3 a9 r/ K2 U/ z  M
會分配 2 個 16k 去緩存頁面,這樣看起來似乎更加合理。
4 {. ~8 d- z: S: Efastcgi_busy_buffers_size 32k;
* c" x! Z: \2 [  t2 {+ B( `這個指令我也不知道是做什麼用,只知道默認值是 fastcgi_buffers 的兩倍。2 [6 E0 P6 [. A( f! _
fastcgi_temp_file_write_size 32k;
; p( \( A+ B* _在寫入 fastcgi_temp_path 時將用多大的數據塊,默認值是 fastcgi_buffers 的兩倍。! u0 P7 W- R+ f
fastcgi_cache TEST
7 z7 N  d- s! @$ z開啟 FastCGI 緩存並且為其製定一個名稱。個人感覺開啟緩存非常有用,可以有效降低 CPU 負載,並且防止 502 錯誤。
4 F) S$ @& Z+ W: L但是這個緩存會引起很多問題,因為它緩存的是動態頁面。具體使用還需根據自己的需求。& q( c+ ]) p2 ?9 ?- W% F
fastcgi_cache_valid 200 302 1h;
% f+ q# S6 o( x$ }+ A) \fastcgi_cache_valid 301 1d;
, D" }3 R9 G: q# J! e, W2 z1 Lfastcgi_cache_valid any 1m;
7 o4 V( n; r) _! Y為指定的應答代碼指定緩存時間,如上例中將 200,302 應答緩存一小時,301 應答緩存 1 天,其他為 1 分鐘。
: V" ^+ t; N% ffastcgi_cache_min_uses 1;% R2 v5 H+ c) y
緩存在 fastcgi_cache_path 指令 inactive 參數值時間內的最少使用次數,如上例,如果在 5 分鐘內某文件 1 次也沒有被& T4 I2 p  S( |9 _  @7 x% @/ n6 q9 S
使用,那麼這個文件將被移除。
# _8 Q2 _" w; }( a' }/ w: L8 ^fastcgi_cache_use_stale error timeout invalid_header http_500;
' {9 B3 J3 J1 g" Q& x不知道這個參數的作用,猜想應該是讓 nginx 知道哪些類型的緩存是沒用的。/ f/ w+ |' K! Q0 O  G. t! `5 U
以上為 nginx 中 FastCGI 相關參數,另外,FastCGI 自身也有一些配置需要進行優化,如果你使用 php-fpm 來管理
9 A9 O3 ?7 {# A# B  |+ a/ NFastCGI,可以修改配置文件中的以下值:
# s2 _$ ?! ^7 n% j( _<value name="max_children">60</value>
' ?6 ^: m: N# R- P$ I! |# N同時處理的並發請求數,即它將開啟最多 60 個子線程來處理並發連接。" a* u2 h) J, n: q- \$ h3 I1 C
<value name="rlimit_files">102400</value>
6 S/ V& D& Q( T% t# Z最多打開文件數。2 j0 Y0 k8 ^$ r2 Z+ G* i8 U
<value name="max_requests">204800</value>
1 _( t" [. U. i* ?9 b每個進程在重置之前能夠執行的最多請求數。
+ ^5 W% P' ]  J- w4 I/ B2 ?$ m* o3 f2 ~
. D& F& N+ x" v; O+ Y6 y# s9 ?. T8 G8 b
參考資料:# p- s% ~. u' @0 C3 b; F7 \# P% t
http://demo.ckan.org/dataset/daf ... /download/nginx.pdf% B- J! n) W/ \
http://blog.chinaunix.net/u3/105004/showart_2087155.html4 G9 x8 M) [" G7 z% g5 p
http://nginx.179401.cn/
# v% i  e1 K7 o( Rhttp://blog.s135.com/nginx_php_v5/+ q& T# M! W5 B9 N! P/ \0 J: F7 K/ a
http://xyz.cinc.biz/2015/09/linux-nginx-php-fpm-connection.html
7 |& N/ Y9 O+ f7 n2 f9 V4 h' Ihttps://www.netroby.com/view/3128% A8 m  _" ~; G. M! p' Q) o: v
fastcgi 快取:; A. }2 _* Y! f4 |
https://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/
, o7 O7 f( O" C+ X
其他:# \& g) b8 @/ B) j  k  `9 B
nginx設定檔內參數的詳細說明: http://nginx.org/en/docs/http/ng ... l#keepalive_timeout, D: |* N: w" p; C8 B! s; W
nginx優化:http://www.jianshu.com/p/2184654ba4b2- t% \, n) W. C, a7 n
gzip壓縮功能以減少網路傳輸檔案大小:http://wenzhixin.net.cn/2013/11/10/server_gzip_on$ \0 b4 a6 g9 z

: ~! f* M- A: k: z5 |1 h* v/ O% U4 {) |' U8 u

, |$ W9 J/ a' R; n1 O, G+ Z  n, d/ S6 ^& O0 R9 i) h





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