52AV手機A片王|52AV.ONE
標題:
nginx優化(針對nginx.conf)
[打印本頁]
作者:
IT_man
時間:
2016-10-1 22:08
標題:
nginx優化(針對nginx.conf)
以CentOS 之 nginx的設定檔是在 /etc/nginx/nginx.conf
5 K. i0 [+ B' O) c
一般來說 nginx 配置文件中對優化比較有作用的為以下幾項:
: t, {' ]% q! M" h: F0 k
worker_processes 8;
* B; k$ q9 N6 K8 b( ~) ^ K% z
nginx 進程數,建議按照 cpu 數目來指定,一般為它的倍數。
4 }+ ^- n8 p Y; L2 N
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
+ D6 I6 L- q* r2 ~: V, L2 k% k: m
為每個進程分配 cpu,上例中將 8 個進程分配到 8 個 cpu,當然可以寫多個,或者將一個進程分配到多個 cpu。
( p A7 p" S8 w1 z4 T/ f: X
worker_rlimit_nofile 102400;
* w: l* H5 E5 U; c; a5 Y0 [+ ^
這個指令是指當一個 nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與 nginx 進程數
, N0 H1 f( H5 i9 M# Q
相除,但是 nginx 分配請求並不是那麼均勻,所以最好與 ulimit -n 的值保持一致。
0 U$ a0 L8 p0 ^. o" Z( y. S1 a% s
use epoll;
9 z* N' _5 o- \+ j0 a1 ]
使用 epoll 的 I/O 模型,這個不用說了吧。
# {5 Q% P) \, T) T# G; g
worker_connections 102400;
@- o( H: Z2 u
每個進程允許的最多連接數,理論上每台 nginx 服務器的最大連接數為 worker_processes*worker_connections。
- u$ A; l3 V2 s3 A$ B
keepalive_timeout 60;
) j1 L; ]6 E' I8 ?( w# z
keepalive 超時時間。
+ X. a/ h: v" ~- w
client_header_buffer_size 4k;
5 n2 f \) z6 p+ y
客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過 1k,不過由
2 i9 ~* y; g2 [, K% X
於一般系統分頁都要大於 1k,所以這裡設置為分頁大小。分頁大小可以用命令 getconf PAGESIZE 取得。
8 {2 Q- C0 a' v, I8 W
open_file_cache max=102400 inactive=20s;
: @. d' e' m- o2 j' s7 N* M
這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時
) v+ y4 D7 {' V. r
間文件沒被請求後刪除緩存。
: T: c2 u4 |: [
open_file_cache_valid 30s;
+ \- {0 S8 i" E6 f! W+ H1 K2 A
這個是指多長時間檢查一次緩存的有效信息。
7 S" F4 o' n& P7 ?& n4 M# ^
open_file_cache_min_uses 1;
4 L8 P2 p. W6 f; `' _
open_file_cache 指令中的 inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打
9 \1 w& V6 C/ K) ~
開的,如上例,如果有一個文件在 inactive 時間內一次沒被使用,它將被移除。
" _* q' L4 I; Y! H1 ]8 [
: W; T) u# d$ P2 U1 d
- v- }. K& J9 p r3 Q8 v; J
關於內核參數的優化:
# I* ~, G* t7 d8 w
net.ipv4.tcp_max_tw_buckets = 6000
, k# \8 E% o+ N2 c
timewait 的數量,默認是 180000。
& e8 C7 ~( X: U3 C
net.ipv4.ip_local_port_range = 1024 65000
: ^7 ]- P+ i; X' f) e1 L
允許系統打開的端口範圍。
" H" O3 N/ L* a8 l3 ?/ N
net.ipv4.tcp_tw_recycle = 1
; G {5 b/ x/ x; X! h D
啟用 timewait 快速回收。
' n- D6 N2 ^2 F
net.ipv4.tcp_tw_reuse = 1
; ] h5 H; G/ u ?. l
開啟重用。允許將 TIME-WAIT sockets 重新用於新的 TCP 連接。
, L, d6 v/ D- {- D4 h! }
net.ipv4.tcp_syncookies = 1
1 t; q( m9 o. T1 u( P. L6 s o& V" v
開啟 SYN Cookies,當出現 SYN 等待隊列溢出時,啟用 cookies 來處理。
, G% M: [+ z. G9 Y6 X% `
net.core.somaxconn = 262144
8 {+ ?# y. i- A6 a; x/ N4 o
web 應用中 listen 函數的 backlog 默認會給我們內核參數的 net.core.somaxconn 限製到 128,而 nginx 定義的
4 `: y& l* g! Q* k, y( ^7 S4 i
NGX_LISTEN_BACKLOG 默認為 511,所以有必要調整這個值。
& W8 r( H. C1 @3 Z% H% w. g* }
net.core.netdev_max_backlog = 262144
n/ i* y# W S, j+ K
每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。
# I5 X( j) X, \8 S2 q4 H
net.ipv4.tcp_max_orphans = 262144
) j' N |' F* {, l1 v: Y, v8 ?7 i' Z
系統中最多有多少個 TCP 套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤兒連接將即刻被復位並打
# ]& B- }3 }1 z. Q, j! V
印出警告信息。這個限制僅僅是為了防止簡單的 DoS 攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值
! D0 q' h, T, Q, f
(如果增加了內存之後)。
$ {+ w! C; ]$ {
net.ipv4.tcp_max_syn_backlog = 262144
/ v, Z+ B3 K8 t0 p, r9 ^- k! a
記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對於有 128M 內存的系統而言,缺省值是 1024,小內存的系
- r1 h: I; ?) E: A5 x
統則是 128。
/ |; x# M% k9 e) G% N {, c4 A+ R
net.ipv4.tcp_timestamps = 0
+ F* h( @( R( s% y. U. G
時間戳可以避免序列號的捲繞。一個 1Gbps 的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的
N9 c9 I" s' x& x7 }! y* p5 V: n$ H* D
數據包。這裡需要將其關掉。
S5 \: B: Y% e, h" i# C' T7 T O" F
net.ipv4.tcp_synack_retries = 1
5 n, D) ^, e; X/ U/ h
為了打開對端的連接,內核需要發送一個 SYN 並附帶一個回應前面一個 SYN 的 ACK。也就是所謂三次握手中的第二次
n! ]+ j5 H1 S. P b8 |
握手。這個設置決定了內核放棄連接之前發送 SYN+ACK 包的數量。
' `! {1 N9 ?- G8 L: Z3 M
net.ipv4.tcp_syn_retries = 1
3 j4 O6 d9 Q/ g2 d
在內核放棄建立連接之前發送 SYN 包的數量。
; H# X( V6 S+ l4 Q
net.ipv4.tcp_fin_timeout = 1
& x7 T0 W1 H( ^0 t- L
如果套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間。對端可以出錯並永遠不關閉連接,甚
7 h% K- p1 i' C: X
至意外當機。缺省值是 60 秒。2.2 內核的通常值是 180 秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕
# O/ r9 _% J" Y0 i0 h; g: \
載的 WEB 服務器,也有因為大量的死套接字而內存溢出的風險,FIN- WAIT-2 的危險性比 FIN-WAIT-1 要小,因為它最
) M1 ]: A2 l }1 s& a5 D" P3 }2 O
多只能吃掉 1.5K 內存,但是它們的生存期長些。
# s* o4 Z8 _' X: r; }
net.ipv4.tcp_keepalive_time = 30
X' i4 y/ u Z8 U$ {
當 keepalive 起用的時候,TCP 發送 keepalive 消息的頻度。缺省是 2 小時。
$ S0 B+ m, @7 @3 r* @
$ `0 k; E* k2 }! b6 D/ F6 C
+ ]2 X ~2 |4 R9 y3 S
下面貼一個完整的內核優化設置:
0 S4 v( m. ^& K& O+ s( H) Y* u
net.ipv4.ip_forward = 0
- F4 H: C3 @! \
net.ipv4.conf.default.rp_filter = 1
! S: o1 S+ G1 U' m1 {: l! C: q( I
net.ipv4.conf.default.accept_source_route = 0
$ r$ y+ `. _: I; b8 [$ e/ V
kernel.sysrq = 0
2 x2 u2 ^( K! @9 x8 F" O4 }: U
kernel.core_uses_pid = 1
3 p: A3 s" _6 Y' n3 @7 C5 }# m
net.ipv4.tcp_syncookies = 1
( L* K( ^- M; k* _& O. r
kernel.msgmnb = 65536
2 X/ ?: _3 ` I3 ]8 j% E3 G6 j
kernel.msgmax = 65536
2 H* J5 G( X/ y: {
kernel.shmmax = 68719476736
; ?2 } S$ |5 u! l" h6 I& D
kernel.shmall = 4294967296
+ p: g7 K/ ^# L3 o! R9 A
net.ipv4.tcp_max_tw_buckets = 6000
8 z8 Q/ j) x {
net.ipv4.tcp_sack = 1
# S* `' d+ H k. m! o
net.ipv4.tcp_window_scaling = 1
' c* ?) ?( C% V! {
net.ipv4.tcp_rmem = 4096 87380 4194304
) n% N; @: j7 \. \
net.ipv4.tcp_wmem = 4096 16384 4194304
x# U+ g2 K+ }) ~; e2 a
net.core.wmem_default = 8388608
% D3 u1 r- }. G. l: q% j$ Z
net.core.rmem_default = 8388608
s1 y- a, `) `; a% z
net.core.rmem_max = 16777216
8 X% \# Z U9 t Q# p! T$ t' Y, P+ E
net.core.wmem_max = 16777216
! u7 y3 G0 ]& Z- [; X0 G
net.core.netdev_max_backlog = 262144
! q" D5 h/ x! V: a
net.core.somaxconn = 262144
6 O$ ~+ d% }: g9 w! N$ p
net.ipv4.tcp_max_orphans = 3276800
2 o. F1 I! u$ |# V8 k
net.ipv4.tcp_max_syn_backlog = 262144
4 {. L2 P( G+ ^- N x; a, H5 ^( A7 J
net.ipv4.tcp_timestamps = 0
W5 F) h% k5 y! \7 N1 J
net.ipv4.tcp_synack_retries = 1
9 u& m T' O7 u
net.ipv4.tcp_syn_retries = 1
2 H9 T! \' X* O* P
net.ipv4.tcp_tw_recycle = 1
, ?/ ^" q: j8 H4 k4 P+ d
net.ipv4.tcp_tw_reuse = 1
0 p% Q7 a$ J( N; F3 N& j, O$ Q
net.ipv4.tcp_mem = 94500000 915000000 927000000
9 M& R$ u( Z, n. H7 r! n
net.ipv4.tcp_fin_timeout = 1
3 I0 w, V# D) x2 z* e; [
net.ipv4.tcp_keepalive_time = 30
4 b0 Y$ A6 F# d1 Y* e/ O* j
net.ipv4.ip_local_port_range = 1024 65000
# P9 [9 ~# D: E* L) c9 t
! N; D4 R% z$ g( T
9 g/ L8 a+ M% Q* r! ?+ C" T
下面是一個簡單的 nginx 配置文件:nginx.conf
; P/ B% J% T' v' v3 H# t' m
user www www;
. O/ B! p" m* a# s
worker_processes 8;
- b7 f! R8 m3 c2 y6 ?! {; d+ v
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;
$ `8 Y2 \ a; p; k e+ l( U
error_log /www/log/nginx_error.log crit;
5 ]8 c* U3 z0 E9 d/ u9 \( b8 s
pid /usr/local/nginx/nginx.pid;
1 t- u1 h' ^: e, |# S+ O: O( `
worker_rlimit_nofile 204800;
0 w: k. d* S: g( y& `6 i
events
1 o- _8 ~/ t& d& F6 _7 r
{
, D4 E6 t3 ]7 C9 P4 l
use epoll;
: _$ D' i! v4 Q
worker_connections 204800;
# A3 I3 d `5 p" q
}
; h& r6 j0 P/ ]5 p
http
# c4 |+ Y: N! T0 b! u( }5 p
{
0 ~1 L( s4 _5 C+ `+ U7 h
include mime.types;
8 L, V: x, ^ I
default_type application/octet-stream;
$ y/ T! e/ j1 R
charset utf-8;
1 p6 [4 K- `" l. B8 X( Q g* T
server_names_hash_bucket_size 128;
- D- n0 u& Y) `& N
client_header_buffer_size 2k;
) m3 d/ u3 |# V0 o2 P
large_client_header_buffers 4 4k;
% S7 F3 \6 Y% @+ U s6 q9 @
client_max_body_size 8m;
7 n! U, b y" i* S6 f' o4 |/ Q
sendfile on;
3 U/ u/ F4 u" d
tcp_nopush on;
4 R8 C0 U* v$ N" {
keepalive_timeout 60;
% G$ h0 R1 E8 d; V4 p
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
' t% W) i- V# i, m* i( `! v/ x
fastcgi_connect_timeout 300;
4 s# I2 s0 T0 j ^' S ~! j' Q
fastcgi_send_timeout 300;
4 \# V5 Z0 M# T5 A; Y/ |
fastcgi_read_timeout 300;
/ A3 b/ C: v$ U5 Q
fastcgi_buffer_size 16k;
$ w- \- m3 w4 C
fastcgi_buffers 16 16k;
( a3 x1 v5 A8 B, \9 O0 Y0 x
fastcgi_busy_buffers_size 16k;
6 J) ^0 w3 ^' }& |& I- P# Y6 I
fastcgi_temp_file_write_size 16k;
: S9 w* E$ E- q5 c* M0 u
fastcgi_cache TEST;
, d/ h4 S! X: |3 e _) Z3 N4 K
fastcgi_cache_valid 200 302 1h;
1 {+ a3 E: |- j. [
fastcgi_cache_valid 301 1d;
' g$ _8 \1 j4 | s# t
fastcgi_cache_valid any 1m;
% {( j2 K4 t' g: @% K* \3 O
fastcgi_cache_min_uses 1;
& _. k% c% U% h7 \. _
fastcgi_cache_use_stale error timeout invalid_header http_500;
3 b! v4 n& u$ B4 U$ V3 n- R! x7 g
open_file_cache max=204800 inactive=20s;
8 r* \: @( I8 n+ U0 `- H# z
open_file_cache_min_uses 1;
. ~: X2 f0 M; {
open_file_cache_valid 30s;
7 m2 j% y" j$ P) @6 J# o w) Z O
tcp_nodelay on;
( W/ f- Y1 }% K( H6 s" Y
gzip on;
" M* c% g6 p) M* d+ ?; [: K
gzip_min_length 1k;
1 j$ w5 O! O' Y0 Z( a0 b2 H
gzip_buffers 4 16k;
! M1 E$ B" a" I" R/ J
gzip_http_version 1.0;
/ ]' `- s y3 }2 |" v
gzip_comp_level 2;
4 e$ \& k' e/ w+ y
gzip_types text/plain application/x-javascript text/css application/xml;
# L, t5 U8 {" `
gzip_vary on;
( `6 u$ X4 n. Y* V# Q& M2 [
server
8 _. r9 G7 m" M/ h
{
& T. C4 ~9 W% l: r
listen 8080;
7 I4 O) o0 C4 y v, L1 f
server_name backup.aiju.com;
! C. e( |% z, |7 T8 }
index index.php index.htm;
, t) ?" E) R0 R. [0 z5 P
root /www/html/;
7 ?# ~. E" Y* }
location /status
/ Q2 ~, u; l4 m
{
7 U9 f0 y ?, W: }# s
stub_status on;
# i- S, z' n3 ]7 X
}
0 G- I) R6 _5 c
location ~ .*\.(php|php5)?$
$ P) k+ i6 P" T# m- m; V$ S
{
* [* f$ u0 l8 P) w$ h Q
fastcgi_pass 127.0.0.1:9000;
. k0 Y! q. {* u6 O- p
fastcgi_index index.php;
' X- C' A2 m7 x" O& w) y* e4 O
include fcgi.conf;
" [: |; U, |2 F) J
}
- `' H3 h% |: Y4 r1 Y& ?
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
) E* m4 T1 c9 n- ]' G! A) u; M* i
{
1 R: w" D0 @. G# {
expires 30d;
7 T6 g* X) Y: ~
}
' I% X% z$ d; }
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
: O% x8 f/ P) x/ p0 h
'$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';
: L: H6 |2 w( Z1 Y; K, M
access_log /www/log/access.log access;
0 [5 a* }: t% x7 O% m5 \ Y
}
" E* w* H& f9 c' v* q# L
}
, k f% v0 ^+ ~
" H/ i/ E* ^. N$ r6 z) S
關於 FastCGI 的幾個指令:
2 g+ r/ I; {: ]
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
7 F/ y6 @! @3 Z2 f. s( y
這個指令為 FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。
$ k; G. I; m; k4 `: n
fastcgi_connect_timeout 300;
3 E, [* ^! F! {- W G
指定連接到後端 FastCGI 的超時時間。
: g1 G; X" {9 Y" v
fastcgi_send_timeout 300;
* o6 P& R4 h( Z6 |
向 FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向 FastCGI 傳送請求的超時時間。
T( z+ d. u8 P9 y2 U
fastcgi_read_timeout 300;
7 Q' A. w0 D" D8 V: L. G ^$ @
接收 FastCGI 應答的超時時間,這個值是指已經完成兩次握手後接收 FastCGI 應答的超時時間。
0 F4 b ^. @. S/ z6 g1 a2 U
fastcgi_buffer_size 16k;
; J) }! l; [. A; o
指定讀取 FastCGI 應答第一部分需要用多大的緩衝區,這裡可以設置為 fastcgi_buffers 指令指定的緩衝區大小,上面的
; p9 K6 l" j( M `/ w
指令指定它將使用 1 個 16k 的緩衝區去讀取應答的第一部分,即應答頭,其實這個應答頭一般情況下都很小(不會超過
: U+ p: f1 H& V8 O9 W+ U
1k),但是你如果在 fastcgi_buffers 指令中指定了緩衝區的大小,那麼它也會分配一個 fastcgi_buffers 指定的緩衝區大
! W3 a% k( _& x& m
小去緩存。
& P. X7 C( c4 V9 @' d/ O' P9 W# b& f
fastcgi_buffers 16 16k;
2 t3 \6 j9 c, k& Q3 `
指定本地需要用多少和多大的緩衝區來緩衝 FastCGI 的應答,如上所示,如果一個 php 腳本所產生的頁面大小為 256k,
9 T0 J O) u9 ?" H, N6 Y, s/ A+ f
則會為其分配 16 個 16k 的緩衝區來緩存,如果大於 256k ,增大於 256k 的部分會緩存到 fastcgi_temp 指定的路徑中,
( G& M7 h" i8 r* y
當然這對服務器負載來說是不明智的方案,因為內存中處理數據速度要快於硬盤,通常這個值的設置應該選擇一個你的
5 l/ x |, o; |3 b( A
站點中的 php 腳本所產生的頁面大小的中間值,比如你的站點大部分腳本所產生的頁面大小為 256k 就可以把這個值設
6 R' P J. \! L C; ]
置為 16 16k,或者 4 64k 或者 64 4k,但很顯然,後兩種並不是好的設置方法,因為如果產生的頁面只有 32k,如果用 4
2 s* D; X. h& |9 [& B5 z& Y
64k 它會分配 1 個 64k 的緩衝區去緩存,而如果使用 64 4k 它會分配 8 個 4k 的緩衝區去緩存,而如果使用 16 16k 則它
$ m& a# e2 j5 x, N
會分配 2 個 16k 去緩存頁面,這樣看起來似乎更加合理。
2 U# p* O% g2 g
fastcgi_busy_buffers_size 32k;
; B: P y2 V+ U5 p, n+ ]5 u7 V s
這個指令我也不知道是做什麼用,只知道默認值是 fastcgi_buffers 的兩倍。
4 D0 V1 |! ^, _! N2 W4 v( P+ I
fastcgi_temp_file_write_size 32k;
! U# i% `% _( W2 _: w
在寫入 fastcgi_temp_path 時將用多大的數據塊,默認值是 fastcgi_buffers 的兩倍。
4 V, i9 l, p/ P0 l0 Z+ z3 A
fastcgi_cache TEST
- o$ p; |& H) g% S) B
開啟 FastCGI 緩存並且為其製定一個名稱。個人感覺開啟緩存非常有用,可以有效降低 CPU 負載,並且防止 502 錯誤。
4 i% j, H0 Q" X+ ~5 u
但是這個緩存會引起很多問題,因為它緩存的是動態頁面。具體使用還需根據自己的需求。
# d1 [9 O/ e9 Y& P+ c
fastcgi_cache_valid 200 302 1h;
- B+ n& F! Z, U1 V: }" M) d- J
fastcgi_cache_valid 301 1d;
' [- D- g, g3 f' @ D+ X! m
fastcgi_cache_valid any 1m;
6 i. I$ r5 R! N# w* m
為指定的應答代碼指定緩存時間,如上例中將 200,302 應答緩存一小時,301 應答緩存 1 天,其他為 1 分鐘。
7 O* w; E5 ~0 p) R l, I
fastcgi_cache_min_uses 1;
6 g+ {9 _2 k7 n( A
緩存在 fastcgi_cache_path 指令 inactive 參數值時間內的最少使用次數,如上例,如果在 5 分鐘內某文件 1 次也沒有被
" _' X7 [6 \* U7 X$ M# W
使用,那麼這個文件將被移除。
! m: Z6 i1 X1 O
fastcgi_cache_use_stale error timeout invalid_header http_500;
" Z8 g. p8 k8 J$ _ ^2 \1 [# i1 k
不知道這個參數的作用,猜想應該是讓 nginx 知道哪些類型的緩存是沒用的。
4 P- X! q1 w" M0 E) \
以上為 nginx 中 FastCGI 相關參數,另外,FastCGI 自身也有一些配置需要進行優化,如果你使用 php-fpm 來管理
( X) C1 t% t$ d
FastCGI,可以修改配置文件中的以下值:
3 U1 Q. C, Y) y) x* ~6 j8 A
<value name="max_children">60</value>
2 K% S. b* ~) \& p
同時處理的並發請求數,即它將開啟最多 60 個子線程來處理並發連接。
g9 J. X {1 c
<value name="rlimit_files">102400</value>
+ O3 C+ w4 I# X) ^
最多打開文件數。
; r5 C0 i& @8 `0 e" L1 j
<value name="max_requests">204800</value>
2 q& P* A; e$ g d7 r% R- p
每個進程在重置之前能夠執行的最多請求數。
$ w8 x$ `2 r- \4 q$ o" K
9 j5 N: m+ Y2 G9 p1 G
- Z" v5 |+ F, {
參考資料:
6 L* ^, c7 t# X
http://demo.ckan.org/dataset/daf ... /download/nginx.pdf
9 ?8 I7 C4 v$ n7 i5 @+ ?0 s
http://blog.chinaunix.net/u3/105004/showart_2087155.html
. d8 o' k8 M, I; {
http://nginx.179401.cn/
8 Z2 Q: C3 U8 t o1 B% E4 k
http://blog.s135.com/nginx_php_v5/
, u+ E5 D# U P" ?
http://xyz.cinc.biz/2015/09/linux-nginx-php-fpm-connection.html
1 B6 H3 S3 `/ j/ w& s6 e, U. D
https://www.netroby.com/view/3128
g% @* {. c& [$ S, W% D% z
fastcgi 快取:
1 M: w3 h9 F9 ~: E7 k7 i4 ]
https://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/
( F; J4 ?8 {- L% a: U
其他:
8 f/ s$ t7 Y% c* B* B+ ~
nginx設定檔內參數的詳細說明:
http://nginx.org/en/docs/http/ng ... l#keepalive_timeout
( h6 ?$ S" r4 I5 y
nginx優化:
http://www.jianshu.com/p/2184654ba4b2
) R8 _' }) U1 l# {9 T2 ^$ u
gzip壓縮功能以減少網路傳輸檔案大小:
http://wenzhixin.net.cn/2013/11/10/server_gzip_on
1 \3 Q" W! n( A5 a: b, D& \1 X' W# j
. T) U5 d# N8 G5 S5 R, X- C: T- o, I
5 q- f+ v6 r" z) `6 [- n F
7 n9 Z0 Q; B9 f) `/ ^
$ M' \5 U0 \5 W, F e P
歡迎光臨 52AV手機A片王|52AV.ONE (https://www.52av.one/)
Powered by Discuz! X3.2