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