52AV手機A片王|52AV.ONE
標題:
nginx優化(針對nginx.conf)
[打印本頁]
作者:
IT_man
時間:
2016-10-1 22:08
標題:
nginx優化(針對nginx.conf)
以CentOS 之 nginx的設定檔是在 /etc/nginx/nginx.conf
9 r$ P0 `: D8 L* A5 E
一般來說 nginx 配置文件中對優化比較有作用的為以下幾項:
4 R2 ~2 {6 Z& o9 f, r$ }- S: n
worker_processes 8;
6 S" H. ]* E& O. q4 h" [+ c+ e4 Y
nginx 進程數,建議按照 cpu 數目來指定,一般為它的倍數。
* [, E8 Z; y3 f8 q# L9 h" a' _$ g
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
' L3 J/ T3 x: a$ ]1 M
為每個進程分配 cpu,上例中將 8 個進程分配到 8 個 cpu,當然可以寫多個,或者將一個進程分配到多個 cpu。
3 T9 O3 S- ?# }' _9 y
worker_rlimit_nofile 102400;
+ K3 L4 z3 P" A. H" x- P
這個指令是指當一個 nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與 nginx 進程數
6 A1 U" ~. P8 m+ O. M- P
相除,但是 nginx 分配請求並不是那麼均勻,所以最好與 ulimit -n 的值保持一致。
2 O2 ^# e# I C `1 k" |2 d
use epoll;
+ J* \) {4 {( p+ f) J z1 ^
使用 epoll 的 I/O 模型,這個不用說了吧。
+ V n% \( X7 y
worker_connections 102400;
2 J$ F7 W2 O& V/ L8 u
每個進程允許的最多連接數,理論上每台 nginx 服務器的最大連接數為 worker_processes*worker_connections。
2 f* r! O" s! q+ S, N. b' `4 O
keepalive_timeout 60;
* W$ o+ Z4 r5 N1 ?- a, b( \ f
keepalive 超時時間。
2 p! S$ K+ O3 R+ y$ [: c$ R
client_header_buffer_size 4k;
2 d" h) M: }" P) L
客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過 1k,不過由
$ R8 S( d$ Q: H! y
於一般系統分頁都要大於 1k,所以這裡設置為分頁大小。分頁大小可以用命令 getconf PAGESIZE 取得。
. p) `0 o- n$ x
open_file_cache max=102400 inactive=20s;
. W; X, a! H- g; |6 b
這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時
3 i% E9 s4 k- J) z% ^
間文件沒被請求後刪除緩存。
# }. k. H+ Q) i% P5 u; X; ^
open_file_cache_valid 30s;
; V" h2 F3 L/ l8 I
這個是指多長時間檢查一次緩存的有效信息。
9 ?+ o5 v! [3 G# {
open_file_cache_min_uses 1;
" y+ I* p' b3 O
open_file_cache 指令中的 inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打
, C, R; ^/ j: s2 Y" _; D
開的,如上例,如果有一個文件在 inactive 時間內一次沒被使用,它將被移除。
; k5 ?. I- l% z) F: `$ n
% N3 Y0 Z: N8 x( G) S! ]2 B
# A( R2 z: C4 _0 G% j5 R% |# i
關於內核參數的優化:
7 r; p7 P4 d& |' \1 T1 V
net.ipv4.tcp_max_tw_buckets = 6000
5 H, U$ G) O4 k3 h
timewait 的數量,默認是 180000。
$ m8 @1 U9 B9 h: U) d1 F! P
net.ipv4.ip_local_port_range = 1024 65000
$ m) g* r. c+ G+ ?, K% ~4 C
允許系統打開的端口範圍。
( I1 ?: s! i8 s p
net.ipv4.tcp_tw_recycle = 1
1 i0 H0 Q1 S4 K: L+ b+ E
啟用 timewait 快速回收。
# P8 d0 u1 z! U7 w& X C
net.ipv4.tcp_tw_reuse = 1
! R" S$ _* W0 i$ X
開啟重用。允許將 TIME-WAIT sockets 重新用於新的 TCP 連接。
: `) B& t" J9 F* v6 u
net.ipv4.tcp_syncookies = 1
4 r, [( n0 f5 D8 {+ n
開啟 SYN Cookies,當出現 SYN 等待隊列溢出時,啟用 cookies 來處理。
' }/ G- a/ i. z: A! B: ?
net.core.somaxconn = 262144
! z2 N! z H0 {6 K! ~
web 應用中 listen 函數的 backlog 默認會給我們內核參數的 net.core.somaxconn 限製到 128,而 nginx 定義的
8 o' w) M4 y% `
NGX_LISTEN_BACKLOG 默認為 511,所以有必要調整這個值。
# k9 @( p/ Q/ ?2 X
net.core.netdev_max_backlog = 262144
7 C& A9 i3 o& i
每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。
# R% r' I* B4 ]; g8 Q: T
net.ipv4.tcp_max_orphans = 262144
0 v& p9 ]( {& ~ S( E& ?4 r
系統中最多有多少個 TCP 套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤兒連接將即刻被復位並打
8 `2 V* p& E" E# Z- P5 z
印出警告信息。這個限制僅僅是為了防止簡單的 DoS 攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值
/ q( |' k# l# p! z9 p- ]
(如果增加了內存之後)。
& k1 _; ~. D) k8 ~- P, A7 I
net.ipv4.tcp_max_syn_backlog = 262144
! I8 q% w; G' b1 U# Q5 k
記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對於有 128M 內存的系統而言,缺省值是 1024,小內存的系
+ Y! H8 s; L; [( d0 k
統則是 128。
$ F% n0 [# ?5 ~4 `* H
net.ipv4.tcp_timestamps = 0
" Q9 a8 k% n0 q" ]: j7 q
時間戳可以避免序列號的捲繞。一個 1Gbps 的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的
3 O5 H4 S: x% k* ]; X8 z# s v# `3 g- x
數據包。這裡需要將其關掉。
6 |& _ s/ m' A) c4 }
net.ipv4.tcp_synack_retries = 1
; H; t; q9 W) ?
為了打開對端的連接,內核需要發送一個 SYN 並附帶一個回應前面一個 SYN 的 ACK。也就是所謂三次握手中的第二次
) R$ b( k! |) l1 v% h: y8 t a
握手。這個設置決定了內核放棄連接之前發送 SYN+ACK 包的數量。
* u w4 I2 V8 m/ b
net.ipv4.tcp_syn_retries = 1
' k! v2 {) d1 Q/ X
在內核放棄建立連接之前發送 SYN 包的數量。
+ v0 Q3 D% h# v% x# i4 N; G
net.ipv4.tcp_fin_timeout = 1
+ @8 _- `, U K1 ?
如果套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間。對端可以出錯並永遠不關閉連接,甚
- C7 |3 c6 V2 p+ q
至意外當機。缺省值是 60 秒。2.2 內核的通常值是 180 秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕
& l1 W% X3 Z1 m( p8 O
載的 WEB 服務器,也有因為大量的死套接字而內存溢出的風險,FIN- WAIT-2 的危險性比 FIN-WAIT-1 要小,因為它最
8 p" \+ m3 e+ h; I+ V7 k M
多只能吃掉 1.5K 內存,但是它們的生存期長些。
' ?# j" W/ K# B$ m# B" H
net.ipv4.tcp_keepalive_time = 30
8 k' d( R6 Y1 V4 q' R4 L' n' R
當 keepalive 起用的時候,TCP 發送 keepalive 消息的頻度。缺省是 2 小時。
$ Z: b0 s) E2 n3 ^+ W
9 y; N$ x1 P4 T+ Z
) T1 T3 y% |( U& {1 G c3 F8 g
下面貼一個完整的內核優化設置:
: h2 v4 @2 w2 r- s9 r8 v
net.ipv4.ip_forward = 0
! i j1 I s0 W8 _* d- d3 M
net.ipv4.conf.default.rp_filter = 1
% s0 j ]4 j* ], K9 X8 _- P! G
net.ipv4.conf.default.accept_source_route = 0
: P0 L _. a7 s5 S' A
kernel.sysrq = 0
- O" q4 |6 A0 F& J- m: Z
kernel.core_uses_pid = 1
! T( D7 L5 g' E6 M9 W% E, b4 A
net.ipv4.tcp_syncookies = 1
% r0 k0 `7 D6 Y r
kernel.msgmnb = 65536
$ x4 x4 G5 U9 K q2 ~) f
kernel.msgmax = 65536
2 w" L0 Q5 G1 r' G$ \( v0 |% U
kernel.shmmax = 68719476736
2 r/ p: p/ X$ {7 b% o- U/ E
kernel.shmall = 4294967296
$ u$ o: F+ A% @! n4 w: q
net.ipv4.tcp_max_tw_buckets = 6000
- w/ k6 r" ~, G8 B4 r2 Y
net.ipv4.tcp_sack = 1
1 \& Z, K1 Y4 ~9 h$ ^* W! H# H
net.ipv4.tcp_window_scaling = 1
$ `, ^0 l% n; \7 E2 I; A
net.ipv4.tcp_rmem = 4096 87380 4194304
6 d6 H1 X/ B0 o9 o: e( t3 l
net.ipv4.tcp_wmem = 4096 16384 4194304
; Y' a8 R; h7 `" A: T
net.core.wmem_default = 8388608
2 R! _! a4 v5 f, R
net.core.rmem_default = 8388608
% _5 m6 @6 Y! W4 J, K
net.core.rmem_max = 16777216
, @& d. K7 ^- c& p3 f
net.core.wmem_max = 16777216
1 e/ f/ I# ^2 S
net.core.netdev_max_backlog = 262144
' Y# H4 \$ e7 n! {
net.core.somaxconn = 262144
0 A j6 c$ J) l9 Y) n1 l2 ~7 R
net.ipv4.tcp_max_orphans = 3276800
! a4 `8 M+ P2 ]) O
net.ipv4.tcp_max_syn_backlog = 262144
0 ^; G2 f1 {) r4 _: }/ d' {- D5 {7 e: A
net.ipv4.tcp_timestamps = 0
" X7 i g3 a0 m: @
net.ipv4.tcp_synack_retries = 1
: g! V- w( i" Y
net.ipv4.tcp_syn_retries = 1
2 Z6 c% v& H2 f& F9 B# @2 M
net.ipv4.tcp_tw_recycle = 1
; R& U4 ?* B, d# ?' X5 h
net.ipv4.tcp_tw_reuse = 1
g4 D. K- e+ G" y" S6 M5 Y- z0 ^
net.ipv4.tcp_mem = 94500000 915000000 927000000
$ F9 y) G) G- ~0 O6 }: g1 w; s
net.ipv4.tcp_fin_timeout = 1
0 Y. ~; C! J/ ?$ m* |$ J, d0 j
net.ipv4.tcp_keepalive_time = 30
1 @% N) F. }3 h, m
net.ipv4.ip_local_port_range = 1024 65000
; _4 n* e, ]" F9 b# f U% q7 h7 V
. d J. ^/ J5 M0 K
- `: a/ T" q. F8 a
下面是一個簡單的 nginx 配置文件:nginx.conf
/ s( c% k4 H$ Z, Z Z3 h% I
user www www;
# K3 b2 g% s. d# i+ |
worker_processes 8;
% [/ r) z5 ?- I% w" g# Z. A' b: x; ]
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;
# O+ I; C4 o4 H
error_log /www/log/nginx_error.log crit;
3 r) @( O' ]4 a
pid /usr/local/nginx/nginx.pid;
2 X& k* |. A4 t- w( p7 s
worker_rlimit_nofile 204800;
6 u; v1 H- L& }) o) k
events
; q+ \. j) F o% g; B
{
% Y0 W, z, A. P. R8 b* `3 i/ h
use epoll;
. U) L: o' ^" _8 f
worker_connections 204800;
1 y7 S' I6 K/ g# z: U5 S% v2 A' x
}
% J. o% f* v; X* O' x* l
http
8 U; L' h* n; `9 U) a3 `, _
{
+ }) }- D+ ^" s y4 L
include mime.types;
% [2 e8 Z7 A% ~. l# K
default_type application/octet-stream;
4 h0 x* W# S; Y& F7 b
charset utf-8;
9 I, e2 ^9 v: R8 }
server_names_hash_bucket_size 128;
1 _8 a+ c% k4 D) M+ V
client_header_buffer_size 2k;
/ g* n, N* M8 [3 H
large_client_header_buffers 4 4k;
- U1 V* a9 a5 r1 D" _
client_max_body_size 8m;
) Q! h, E* {' T
sendfile on;
: ]: Q; F8 Q& g; q2 u9 N/ ?
tcp_nopush on;
. I9 J' f- C4 `* m7 Y7 n+ F* E
keepalive_timeout 60;
' U; h Q' L# S. i' n- r
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
0 b/ L% I! P/ O; j; f& j& e* K% o
fastcgi_connect_timeout 300;
& l0 l s6 k, r
fastcgi_send_timeout 300;
$ a! F, j9 E2 E
fastcgi_read_timeout 300;
& D, H) Q) A; v& r. p! N2 u
fastcgi_buffer_size 16k;
* k$ v. t0 i5 g6 L2 ]# E' J B
fastcgi_buffers 16 16k;
( ~3 {4 M5 h9 c4 S
fastcgi_busy_buffers_size 16k;
/ N0 e0 D. v6 S K, C
fastcgi_temp_file_write_size 16k;
; T7 P& H6 z, x3 _4 ]6 I4 S4 s: _
fastcgi_cache TEST;
6 \9 y+ U" u% I: l
fastcgi_cache_valid 200 302 1h;
2 o9 {$ D [3 t5 {# n' j- Q
fastcgi_cache_valid 301 1d;
/ |9 X0 `% I9 p/ a5 [
fastcgi_cache_valid any 1m;
& ^, }3 T& d( W4 V
fastcgi_cache_min_uses 1;
0 c: D5 R8 n+ `" d9 X# B
fastcgi_cache_use_stale error timeout invalid_header http_500;
, H& e+ ?; n, p2 K! S% G( p
open_file_cache max=204800 inactive=20s;
n* m) G/ b1 y4 V/ w) V3 V
open_file_cache_min_uses 1;
# V; Q2 o* {) Q* e$ V) n5 z
open_file_cache_valid 30s;
h: @, v& B* y5 T2 J7 R5 \* O! T
tcp_nodelay on;
: }! L3 h0 Q( k- o5 ~
gzip on;
) p+ H( j, b9 Y& B" F! @
gzip_min_length 1k;
( U4 E7 ~; }* X7 w2 |
gzip_buffers 4 16k;
1 ^& C$ x+ }% Z
gzip_http_version 1.0;
$ {# \7 t* X; f3 T" [) k6 T' X
gzip_comp_level 2;
3 Y* A* W4 k; c0 E
gzip_types text/plain application/x-javascript text/css application/xml;
, \9 o+ a3 r$ I2 I' U* L/ Z4 m
gzip_vary on;
5 f0 N5 l" p' K. w) ~$ X
server
6 n0 x& x* P# p; x8 {8 k1 e
{
" z4 m8 u" H2 y! e- h8 j
listen 8080;
# _; M: A9 Y' ]" E! }7 w
server_name backup.aiju.com;
; D$ |. W" Y& ^" K$ a* b7 Y8 A
index index.php index.htm;
( X( I/ G8 f6 ]( ^2 d* N$ Y8 a; ?
root /www/html/;
2 q' ^: j% c, A1 ?+ ?+ C& b
location /status
/ u0 `+ f$ T1 ~/ |! S" u
{
6 j3 u$ I3 p4 H; j7 H! e0 X
stub_status on;
; x" r2 P _' @0 N" ]
}
# T5 ~) K* |8 [7 I: X
location ~ .*\.(php|php5)?$
1 a* i# g" J9 b5 |6 E N1 P$ o/ m
{
8 D( b! o* [9 @# y% P
fastcgi_pass 127.0.0.1:9000;
' H1 q' k* R9 }
fastcgi_index index.php;
7 b; m$ @7 I5 Q$ a, Y+ B5 O
include fcgi.conf;
5 _* N/ M0 w# b- M" [1 _: ]
}
; j) m: z* n) v: q& L- I
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
& F; t0 w, z& N3 a7 @3 K
{
, j5 p" q# D, g H* C3 r, S
expires 30d;
5 p0 g: T! E }% B0 w
}
# K" J- E6 _, S/ l- U3 n7 ]1 s
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
' O1 B' ~* u* F1 t0 J. q
'$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';
; L6 t) Z5 W3 P
access_log /www/log/access.log access;
+ s" |/ ^4 o* H$ D0 p3 I5 q. X$ k
}
* m; @* R/ E0 E# h
}
8 W( z! i2 _0 f) E4 i; ~
5 \. A/ R# i( v. t
關於 FastCGI 的幾個指令:
2 U4 L! s ^5 T8 t
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
8 m5 l" U* l9 _9 {
這個指令為 FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。
8 p" e( t# b0 O+ F: ?; g
fastcgi_connect_timeout 300;
; T! y4 g: o1 W2 S% r8 e$ q' V
指定連接到後端 FastCGI 的超時時間。
1 t: {; t: W4 F9 t7 `# U S4 p
fastcgi_send_timeout 300;
* L. S% X, g: |. _: E' P% q
向 FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向 FastCGI 傳送請求的超時時間。
; D+ b5 I' Z$ q5 K' O
fastcgi_read_timeout 300;
5 c9 b& V9 U5 |* S
接收 FastCGI 應答的超時時間,這個值是指已經完成兩次握手後接收 FastCGI 應答的超時時間。
. Y I" |# c1 T
fastcgi_buffer_size 16k;
% \2 E% F4 p8 \- m0 S* d" I
指定讀取 FastCGI 應答第一部分需要用多大的緩衝區,這裡可以設置為 fastcgi_buffers 指令指定的緩衝區大小,上面的
/ j, {2 s: c' B6 J3 T5 h8 [$ e
指令指定它將使用 1 個 16k 的緩衝區去讀取應答的第一部分,即應答頭,其實這個應答頭一般情況下都很小(不會超過
, U3 ~8 v% |; x4 p. ?
1k),但是你如果在 fastcgi_buffers 指令中指定了緩衝區的大小,那麼它也會分配一個 fastcgi_buffers 指定的緩衝區大
5 d4 w: V1 J4 Q4 \% r U$ L
小去緩存。
) K$ L" M) w: k& E9 r* k
fastcgi_buffers 16 16k;
; a2 Q. q1 C& L8 U
指定本地需要用多少和多大的緩衝區來緩衝 FastCGI 的應答,如上所示,如果一個 php 腳本所產生的頁面大小為 256k,
$ z2 }0 a& ~5 _% K5 ^
則會為其分配 16 個 16k 的緩衝區來緩存,如果大於 256k ,增大於 256k 的部分會緩存到 fastcgi_temp 指定的路徑中,
$ A, S* X z' W5 |
當然這對服務器負載來說是不明智的方案,因為內存中處理數據速度要快於硬盤,通常這個值的設置應該選擇一個你的
, P5 k7 u, g3 |
站點中的 php 腳本所產生的頁面大小的中間值,比如你的站點大部分腳本所產生的頁面大小為 256k 就可以把這個值設
5 ]; J7 t0 O& ~
置為 16 16k,或者 4 64k 或者 64 4k,但很顯然,後兩種並不是好的設置方法,因為如果產生的頁面只有 32k,如果用 4
H8 L6 N, W2 m4 ^) z
64k 它會分配 1 個 64k 的緩衝區去緩存,而如果使用 64 4k 它會分配 8 個 4k 的緩衝區去緩存,而如果使用 16 16k 則它
* I: t, z3 j: P
會分配 2 個 16k 去緩存頁面,這樣看起來似乎更加合理。
" n( W. a* `; b, D3 i3 }: {7 A
fastcgi_busy_buffers_size 32k;
( K: }0 v) l: e/ d# X: T
這個指令我也不知道是做什麼用,只知道默認值是 fastcgi_buffers 的兩倍。
( F- e$ w# s. U9 V( S
fastcgi_temp_file_write_size 32k;
2 g7 }0 J3 I& _+ g5 w
在寫入 fastcgi_temp_path 時將用多大的數據塊,默認值是 fastcgi_buffers 的兩倍。
. W" T% m3 g' m% u5 s, \
fastcgi_cache TEST
6 X0 W' @/ @4 j7 B
開啟 FastCGI 緩存並且為其製定一個名稱。個人感覺開啟緩存非常有用,可以有效降低 CPU 負載,並且防止 502 錯誤。
2 @3 ]! ~1 l9 i1 A9 v
但是這個緩存會引起很多問題,因為它緩存的是動態頁面。具體使用還需根據自己的需求。
! K9 \9 t. j# u
fastcgi_cache_valid 200 302 1h;
2 G5 Q4 b3 z& q2 x
fastcgi_cache_valid 301 1d;
' V1 H3 z+ G6 T7 R D1 e
fastcgi_cache_valid any 1m;
! J( F, m- b" w$ M+ `: x
為指定的應答代碼指定緩存時間,如上例中將 200,302 應答緩存一小時,301 應答緩存 1 天,其他為 1 分鐘。
. N) e# Y; j* v5 ^$ M+ ]
fastcgi_cache_min_uses 1;
K. `# T0 N4 c6 O$ j: N! Y
緩存在 fastcgi_cache_path 指令 inactive 參數值時間內的最少使用次數,如上例,如果在 5 分鐘內某文件 1 次也沒有被
; I2 y1 _, v( k) M% _
使用,那麼這個文件將被移除。
& K: p7 t( a* F" H {
fastcgi_cache_use_stale error timeout invalid_header http_500;
6 ~7 }+ ]# M7 F8 N; n- ^
不知道這個參數的作用,猜想應該是讓 nginx 知道哪些類型的緩存是沒用的。
1 {, g7 @" Y9 M' O; O9 j+ r1 R
以上為 nginx 中 FastCGI 相關參數,另外,FastCGI 自身也有一些配置需要進行優化,如果你使用 php-fpm 來管理
* x \$ h! }$ x
FastCGI,可以修改配置文件中的以下值:
* U$ P% X( P* p% s
<value name="max_children">60</value>
8 {( E! ~' X5 w; t0 l9 E
同時處理的並發請求數,即它將開啟最多 60 個子線程來處理並發連接。
3 f: }# x4 d0 B/ K/ x2 }4 o# x
<value name="rlimit_files">102400</value>
! u1 E- z+ x8 j4 M4 W
最多打開文件數。
/ [6 g# b! r# v! q$ w4 b/ c: |
<value name="max_requests">204800</value>
- m& A. P/ P, X( G% T( h
每個進程在重置之前能夠執行的最多請求數。
4 i/ o6 r, P* K7 G, z
$ t# H1 a- W& l& T9 ~5 Y1 ]
" a- q# g6 w8 Y3 K
參考資料:
, I9 }* M$ [' {& {" y1 p
http://demo.ckan.org/dataset/daf ... /download/nginx.pdf
+ |' T! U( i0 l! X& m! Z
http://blog.chinaunix.net/u3/105004/showart_2087155.html
% ?7 l, y% y& N, j8 u% i
http://nginx.179401.cn/
! W# L/ j' P+ Y6 A
http://blog.s135.com/nginx_php_v5/
& m% v, O' b0 U
http://xyz.cinc.biz/2015/09/linux-nginx-php-fpm-connection.html
1 `- X; ?$ T, X% o! v
https://www.netroby.com/view/3128
1 w" K5 s" ~, A
fastcgi 快取:
5 A. ?! P3 N8 i7 V# U) d( Z
https://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/
: ?7 @3 z b! S- i [& j
其他:
( L( K5 y9 |) p0 m, K
nginx設定檔內參數的詳細說明:
http://nginx.org/en/docs/http/ng ... l#keepalive_timeout
, H2 B$ d- j# f& h/ {* m
nginx優化:
http://www.jianshu.com/p/2184654ba4b2
8 H" m$ K8 x5 K& t- p1 k u
gzip壓縮功能以減少網路傳輸檔案大小:
http://wenzhixin.net.cn/2013/11/10/server_gzip_on
( n7 N( R$ f2 l
/ h# ]0 A$ ^2 [2 n( S+ H
& ]" R- X. Q- z9 ]* o$ F
& y% X- g G/ t, e# r
9 B' J8 @8 c) g; A; o/ M
歡迎光臨 52AV手機A片王|52AV.ONE (https://www.52av.one/)
Powered by Discuz! X3.2