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

 找回密碼
 立即註冊
查看: 1447|回復: 0

[nginx|php-fpm] nginx優化(針對nginx.conf)

[複製鏈接]
發表於 2016-10-1 22:08:34 | 顯示全部樓層 |閱讀模式
tid=48521&以CentOS 之 nginx的設定檔是在 /etc/nginx/nginx.conf
+ u) ~8 y1 z8 @- ^" B一般來說 nginx 配置文件中對優化比較有作用的為以下幾項:
: F4 d9 k/ N. H6 i2 y& `; f7 y" Fworker_processes 8;  B1 \5 ^, j) H+ k0 o; V/ a; v
nginx 進程數,建議按照 cpu 數目來指定,一般為它的倍數。' j* a: q1 M, M/ q# p0 B* D$ ]7 z
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
" I7 v9 q. F/ p為每個進程分配 cpu,上例中將 8 個進程分配到 8 個 cpu,當然可以寫多個,或者將一個進程分配到多個 cpu。% T! Z$ R6 e& [( n9 J% }
worker_rlimit_nofile 102400;
. ?  Y, T/ h, ~5 g# H  e這個指令是指當一個 nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與 nginx 進程數
7 k0 |9 g3 }  f) C相除,但是 nginx 分配請求並不是那麼均勻,所以最好與 ulimit -n 的值保持一致。1 X) l6 [/ P" r: ~
use epoll;* ]5 K9 p8 T$ m6 M* F. e" l
使用 epoll 的 I/O 模型,這個不用說了吧。+ m; v5 s' M0 `# d& h) Y0 r7 j
worker_connections 102400;8 T* J4 m* y7 M; a4 q
每個進程允許的最多連接數,理論上每台 nginx 服務器的最大連接數為 worker_processes*worker_connections。: w( k5 G4 E+ N3 o
keepalive_timeout 60;/ {: Q: N6 x1 M* L$ F  g
keepalive 超時時間。8 N* [& i" ~3 b2 x: e+ }/ r# j
client_header_buffer_size 4k;
, D& ~2 r" H+ @& m客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過 1k,不過由; @1 l5 ?4 e. A. G1 N& ^6 C4 ?
於一般系統分頁都要大於 1k,所以這裡設置為分頁大小。分頁大小可以用命令 getconf PAGESIZE 取得。
; Z9 l2 N  P' |1 k) d3 F. [open_file_cache max=102400 inactive=20s;
  j! q' }5 r5 W' Z* E這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時4 G/ Q$ p) c0 ^
間文件沒被請求後刪除緩存。
9 b- i6 t3 T4 u+ V2 K4 ]open_file_cache_valid 30s;( m2 M0 Y, Z8 L; Q" y" T1 K
這個是指多長時間檢查一次緩存的有效信息。6 `. H! J. v" A6 f8 }" D: ?; P
open_file_cache_min_uses 1;
, W* O6 w7 Y  P/ v8 bopen_file_cache 指令中的 inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打0 k, u+ w1 W4 g( y
開的,如上例,如果有一個文件在 inactive 時間內一次沒被使用,它將被移除。
- t# T+ I3 {  e1 ]5 j" J
7 }( F: m) \5 n* I
6 {" F- c8 B4 f2 m$ ^3 L關於內核參數的優化:& T7 Y3 w- g( X+ y# @( ]
net.ipv4.tcp_max_tw_buckets = 6000! G( L! m  _% K! D
timewait 的數量,默認是 180000。
$ O) V8 G" A0 F6 F* f5 ~" dnet.ipv4.ip_local_port_range = 1024 65000  D. l/ d' d" ^
允許系統打開的端口範圍。1 R6 {; Y7 g- f  H3 R% L
net.ipv4.tcp_tw_recycle = 1
& B1 \  A' l/ a0 Z啟用 timewait 快速回收。
3 E! N' x) T# _' T% Fnet.ipv4.tcp_tw_reuse = 1
+ R: R* j+ s8 }開啟重用。允許將 TIME-WAIT sockets 重新用於新的 TCP 連接。0 J) n7 o8 z4 l( z% L# d' @
net.ipv4.tcp_syncookies = 16 \6 n5 k, }- I( R
開啟 SYN Cookies,當出現 SYN 等待隊列溢出時,啟用 cookies 來處理。
6 @* Q4 r( P4 i1 \( Nnet.core.somaxconn = 262144; z( H& f6 A2 z- q' a
web 應用中 listen 函數的 backlog 默認會給我們內核參數的 net.core.somaxconn 限製到 128,而 nginx 定義的
% D$ m7 `$ ?; U' M2 cNGX_LISTEN_BACKLOG 默認為 511,所以有必要調整這個值。
  Y9 ^% G/ b2 Y% q) w% Inet.core.netdev_max_backlog = 262144& b$ s+ \" H9 b" S+ ~1 S( c
每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。
  T0 H4 K, m+ Z, Znet.ipv4.tcp_max_orphans = 262144
. a2 v4 x3 s2 j" e$ a* Y系統中最多有多少個 TCP 套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤兒連接將即刻被復位並打% @4 b" x1 J  o9 }
印出警告信息。這個限制僅僅是為了防止簡單的 DoS 攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值
5 _2 _0 F8 p9 Y6 C. c(如果增加了內存之後)。' ~6 F+ \# C& R( T6 y2 `
net.ipv4.tcp_max_syn_backlog = 2621440 J, g* Z8 l; @% T1 ]
記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對於有 128M 內存的系統而言,缺省值是 1024,小內存的系% Z; P& C+ B, q" b0 b3 b
統則是 128。# @3 E3 S+ c/ U: I, R1 C
net.ipv4.tcp_timestamps = 0( B! z* t' Y, E% o/ Y  q
時間戳可以避免序列號的捲繞。一個 1Gbps 的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的% a. ~. I& c  s: A
數據包。這裡需要將其關掉。; g6 q  v/ S: p  v$ `2 H) |) e  U
net.ipv4.tcp_synack_retries = 1! X- H+ ~$ n/ Z( A" w
為了打開對端的連接,內核需要發送一個 SYN 並附帶一個回應前面一個 SYN 的 ACK。也就是所謂三次握手中的第二次
4 p; m1 B( J. }4 y握手。這個設置決定了內核放棄連接之前發送 SYN+ACK 包的數量。3 p. z$ d7 z2 `- I; I. q
net.ipv4.tcp_syn_retries = 1
3 q/ j+ l' N; C# f+ G* e$ L在內核放棄建立連接之前發送 SYN 包的數量。
. i/ Y" e0 k3 X- M  W7 Unet.ipv4.tcp_fin_timeout = 1
7 u" ^# @7 O4 R如果套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間。對端可以出錯並永遠不關閉連接,甚1 Z4 f( i& b! T8 K- w; d# `
至意外當機。缺省值是 60 秒。2.2 內核的通常值是 180 秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕4 ~7 [/ R0 u0 O$ Z3 r
載的 WEB 服務器,也有因為大量的死套接字而內存溢出的風險,FIN- WAIT-2 的危險性比 FIN-WAIT-1 要小,因為它最) f1 u* A* t0 ?0 h
多只能吃掉 1.5K 內存,但是它們的生存期長些。
: m1 I( @, x( m. L0 T& Unet.ipv4.tcp_keepalive_time = 30
! e1 C3 t) ^+ T! p/ v當 keepalive 起用的時候,TCP 發送 keepalive 消息的頻度。缺省是 2 小時。
2 l- {8 t/ L: E! i2 |9 U. m( u4 J7 V3 U3 h! U( C1 j+ G- P4 l
; F& v9 u" w  n3 Y5 i+ P- M
下面貼一個完整的內核優化設置:
4 K1 V! Q9 b8 inet.ipv4.ip_forward = 01 h  ^  L. T/ T
net.ipv4.conf.default.rp_filter = 1
/ Z; F4 A" Z5 i* p* I: t  e+ t- f& tnet.ipv4.conf.default.accept_source_route = 00 C% Y  t0 P6 v2 q6 Y
kernel.sysrq = 0( x% R4 I+ ]5 [/ @( s& M
kernel.core_uses_pid = 1
# ?  y+ r. x! O! fnet.ipv4.tcp_syncookies = 1
- O) @7 ^) b! k/ R: v1 w9 Gkernel.msgmnb = 65536' `# l$ B  T7 a5 W# \9 H3 o
kernel.msgmax = 65536# K/ v/ s' \/ l. f  Z* \
kernel.shmmax = 68719476736
3 W0 D" _$ N; H$ h- X! z6 G. Ukernel.shmall = 4294967296* G+ l6 Y  J" h# t; u+ n
net.ipv4.tcp_max_tw_buckets = 6000
* Y5 @8 K. I4 k1 q1 V1 g3 Lnet.ipv4.tcp_sack = 14 ?0 l! `- m- X. b3 B& [$ U1 V4 ~
net.ipv4.tcp_window_scaling = 1
' ~# E  M1 ~$ X4 E7 Tnet.ipv4.tcp_rmem = 4096 87380 4194304* p5 e+ O' b; o# H! u' u6 |1 o
net.ipv4.tcp_wmem = 4096 16384 41943042 @2 T; M: G( R
net.core.wmem_default = 8388608
" e1 o+ X/ F/ x5 a2 H, [net.core.rmem_default = 83886089 U5 J* r' O; q1 o& i( e9 m( [; X
net.core.rmem_max = 16777216
% k# ]$ ]2 e7 Q  c1 Qnet.core.wmem_max = 167772165 _) f( Q8 Y! c/ g" }7 D0 N
net.core.netdev_max_backlog = 262144$ c( S) w7 @/ l+ h: ^
net.core.somaxconn = 262144
& |: ?/ p( P6 r1 ~9 `' \. x9 c( P' Enet.ipv4.tcp_max_orphans = 3276800' [$ ~7 b: L! \+ z
net.ipv4.tcp_max_syn_backlog = 262144
. W. O, ~) J/ \/ ?+ R' qnet.ipv4.tcp_timestamps = 0% V/ T$ U% x# a3 \# M
net.ipv4.tcp_synack_retries = 1, w/ m+ I6 ]( J+ q; w4 B
net.ipv4.tcp_syn_retries = 1% b5 R5 W4 s' l- c% Z  J
net.ipv4.tcp_tw_recycle = 1
0 Z# F& h" c7 ]) y9 Z; Anet.ipv4.tcp_tw_reuse = 13 C! |: A. J! q
net.ipv4.tcp_mem = 94500000 915000000 9270000001 q) ^( p; H, G. p% x# m
net.ipv4.tcp_fin_timeout = 1
0 D& x7 Z$ e+ \/ a0 f, W  snet.ipv4.tcp_keepalive_time = 30
6 x  _4 a& J  Fnet.ipv4.ip_local_port_range = 1024 65000
7 w  e9 l0 s, F2 P5 H" [
. |1 e5 z2 o; g' Y' T
: v/ _4 F3 L7 c# E6 w* _+ Q下面是一個簡單的 nginx 配置文件:nginx.conf
) w" C; M' \$ C* J9 `3 V+ p0 suser www www;# u4 y; Y( f" w
worker_processes 8;, T! i( N2 v" M* \- D* j. A/ Y$ W
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;
' A+ O8 w. A0 t  B- c0 Gerror_log /www/log/nginx_error.log crit;  s' C# ~7 `1 C+ K" }& v$ d: j
pid /usr/local/nginx/nginx.pid;9 ?* B- n* ^1 }3 m) Z. @
worker_rlimit_nofile 204800;
& R3 ]  N2 j6 }& ]) xevents
9 k2 `, h9 D: k) h{
2 r" O7 u% U' z9 s! V/ B  use epoll;
1 l# t0 X3 g# N/ A: }* O  worker_connections 204800;$ r* t5 R5 e1 x+ K
}% |6 G7 B/ b/ Y
http
+ u" s, ], U" E* Z; q{2 M; x1 a0 n% v
include mime.types;
$ [+ {: b7 b2 F, f) f default_type application/octet-stream;( M) W8 i3 \/ l2 A; B! U
charset utf-8;
1 \. W2 p9 W7 `6 V9 { server_names_hash_bucket_size 128;# Z8 m) l5 }( U8 _! r9 K/ e
client_header_buffer_size 2k;
& e0 h0 L2 u% x4 E9 L large_client_header_buffers 4 4k;
4 r+ `* w1 l0 C client_max_body_size 8m;3 `4 V; X5 [, M5 n3 j6 u9 g
sendfile on;
, p; ?" c1 o+ j$ l% U( O& B/ B, s tcp_nopush on;  |* d3 D+ X+ Y* z7 o6 R3 |
keepalive_timeout 60;/ f8 \) }7 B! v6 D+ `  l- o0 S! ~
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
+ y; v9 c# t, I% j+ _/ c fastcgi_connect_timeout 300;
8 r4 ]5 m) L6 @! Z fastcgi_send_timeout 300;) j1 ^8 c5 \7 V$ t$ v3 ^. @
fastcgi_read_timeout 300;
; E4 k: I0 z3 c! g fastcgi_buffer_size 16k;
2 r% M) ?: E7 o! h& y  X+ Z0 ~ fastcgi_buffers 16 16k;7 V# n# {1 K; t. o
fastcgi_busy_buffers_size 16k;
  O( M9 O6 y3 P* q2 |$ j- g: ` fastcgi_temp_file_write_size 16k;# h& j- c$ \8 Z0 y& ~) B8 ~( \
fastcgi_cache TEST;
$ l' i+ a# ^" V1 e* M4 B4 d fastcgi_cache_valid 200 302 1h;
, x5 ~. l7 e: z3 n, `6 {8 ~% @' _ fastcgi_cache_valid 301 1d;
& c3 C% m, Q. M/ Z2 d$ ?+ i fastcgi_cache_valid any 1m;* t4 q1 L. n( ~# N2 n
fastcgi_cache_min_uses 1;
/ P: B5 _& |* i8 n; S5 S: W fastcgi_cache_use_stale error timeout invalid_header http_500;& f$ F6 \& R; y) q# b* R) ]5 G
open_file_cache max=204800 inactive=20s;
- M) E7 B: d9 G, U5 o& K9 y open_file_cache_min_uses 1;2 d: p& P; S# [. ~1 H9 T
open_file_cache_valid 30s;  A# ?  _$ P0 K5 ^- N8 O9 g& P$ [
tcp_nodelay on;
7 X7 m* d# ]  S- d/ R3 S, K gzip on;( b0 a6 O; S6 w  @1 U* W
gzip_min_length 1k;
5 E9 c- }& Q" h+ U6 E# M gzip_buffers 4 16k;
. \( ~1 {7 S4 j/ ^ gzip_http_version 1.0;" V+ z" \8 E) A! r
gzip_comp_level 2;
( x: L  ]) q, P" p( K gzip_types text/plain application/x-javascript text/css application/xml;
4 V/ J( U, C' e# _# b* m# E7 T gzip_vary on;
& E9 U7 ^! w2 P4 p3 q$ b' j server. f4 ?1 b4 v$ f7 |- U
{% t  C" k- n" y+ y4 K$ ?
listen 8080;$ \* h4 J, r* H% t+ u6 I# l
server_name backup.aiju.com;
/ y  d/ i2 v7 i) R. S. | index index.php index.htm;8 X9 }6 J* ?& G% L; _) P7 Z
root /www/html/;7 X0 n- s' `1 o" G: }6 u
location /status
6 q* W# a' X' L7 u0 X {
9 Q. w  |9 J' Z: v0 K1 ? stub_status on;
# j6 N* I* n& y- Y6 G# @; e$ P! u  A }
9 B& e, S$ \, a7 P4 n$ ]/ s location ~ .*\.(php|php5)?$
$ B7 P2 E( z- `0 H {, m; j& ]% T# G: S. H+ W5 O
fastcgi_pass 127.0.0.1:9000;  M) w+ T; `, a3 ]4 k* ^7 H. b
fastcgi_index index.php;1 F7 t0 }, Q' K6 J7 C! ]3 N: o' a, X
include fcgi.conf;! h- Y8 A5 [3 y; t% l# a  _
}
* ^$ n; H% n$ Y9 G( l. \' F: ~: n location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$4 T5 q: F7 ?, O( k( _0 T- k
{
" U4 G2 v! K: N! y1 E0 ? expires 30d;
. l' \4 d# B! P6 k+ q }) a* d7 S9 y( b% \: Z+ S) M
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
8 z" ?0 J3 W. C- D- ]' \ '$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';! l8 i( {! f/ f5 H  K7 h
access_log /www/log/access.log access;5 R. b& \& O7 B/ w: f4 P) A
}
7 R4 H- R! [, O3 r5 g1 V}
7 }- E% A+ h- ^5 u5 R! O
& k$ j8 ?+ f* y# Y3 G) s關於 FastCGI 的幾個指令:- s  K, f8 S' F& f! W* I; a
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;2 K9 E" `) u9 e: A% F  F
這個指令為 FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。
5 J% k. |& Q& N" z9 d9 Bfastcgi_connect_timeout 300;% [2 l2 b( L1 E; `
指定連接到後端 FastCGI 的超時時間。
3 a  r7 J, e+ A( `fastcgi_send_timeout 300;
- X- S8 l" g! K' z6 R+ T; @向 FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向 FastCGI 傳送請求的超時時間。9 C! f" p- J9 `. c
fastcgi_read_timeout 300;
9 Z( h, l7 N6 k' N6 o% r接收 FastCGI 應答的超時時間,這個值是指已經完成兩次握手後接收 FastCGI 應答的超時時間。
: `. k' S8 }- D0 o" O! f6 Lfastcgi_buffer_size 16k;
+ e2 s4 @  V: `- ~* o  l指定讀取 FastCGI 應答第一部分需要用多大的緩衝區,這裡可以設置為 fastcgi_buffers 指令指定的緩衝區大小,上面的# Y3 b8 o$ w2 O. A7 F
指令指定它將使用 1 個 16k 的緩衝區去讀取應答的第一部分,即應答頭,其實這個應答頭一般情況下都很小(不會超過2 ~' R$ e3 r5 P1 y! u
1k),但是你如果在 fastcgi_buffers 指令中指定了緩衝區的大小,那麼它也會分配一個 fastcgi_buffers 指定的緩衝區大# a' T' Z  e% s, |& ]  X* Y
小去緩存。+ H: ^/ e. M2 C* g; R. a
fastcgi_buffers 16 16k;
1 Q# m0 W$ D: u8 x指定本地需要用多少和多大的緩衝區來緩衝 FastCGI 的應答,如上所示,如果一個 php 腳本所產生的頁面大小為 256k,, n- U6 D; f2 h6 k, @( ~
則會為其分配 16 個 16k 的緩衝區來緩存,如果大於 256k ,增大於 256k 的部分會緩存到 fastcgi_temp 指定的路徑中,
# U2 [2 z) P8 t1 @6 o: c6 c2 x當然這對服務器負載來說是不明智的方案,因為內存中處理數據速度要快於硬盤,通常這個值的設置應該選擇一個你的( a$ m' Z( j3 u" p
站點中的 php 腳本所產生的頁面大小的中間值,比如你的站點大部分腳本所產生的頁面大小為 256k 就可以把這個值設
4 d+ _) s" E. Y% b- E5 K3 \6 y/ q置為 16 16k,或者 4 64k 或者 64 4k,但很顯然,後兩種並不是好的設置方法,因為如果產生的頁面只有 32k,如果用 4" Q* \7 z( u6 P! l1 B" B
64k 它會分配 1 個 64k 的緩衝區去緩存,而如果使用 64 4k 它會分配 8 個 4k 的緩衝區去緩存,而如果使用 16 16k 則它
* V" L! t- H5 E' n( ?會分配 2 個 16k 去緩存頁面,這樣看起來似乎更加合理。
* H/ k7 g( P- J" F# u% d$ wfastcgi_busy_buffers_size 32k;  S9 M3 @( w- @; G
這個指令我也不知道是做什麼用,只知道默認值是 fastcgi_buffers 的兩倍。
, Q$ W1 m: y+ o' _2 l, q6 J% Ufastcgi_temp_file_write_size 32k;+ o1 w0 N# n  ?+ }0 s+ S
在寫入 fastcgi_temp_path 時將用多大的數據塊,默認值是 fastcgi_buffers 的兩倍。
+ Z6 _' W4 n2 T4 ~  Q0 f& O9 Vfastcgi_cache TEST
+ `) h$ P. _- D/ `0 y% J開啟 FastCGI 緩存並且為其製定一個名稱。個人感覺開啟緩存非常有用,可以有效降低 CPU 負載,並且防止 502 錯誤。
0 x5 z1 s! \5 U& P! U( I( |但是這個緩存會引起很多問題,因為它緩存的是動態頁面。具體使用還需根據自己的需求。0 K/ q8 _9 n' o/ o* [* B2 S6 z
fastcgi_cache_valid 200 302 1h;8 ?% O$ W3 n9 T; @8 e. y% v
fastcgi_cache_valid 301 1d;$ M" h; E) |8 S
fastcgi_cache_valid any 1m;* U4 Z) B' B: e' I: M% _" G8 V- G
為指定的應答代碼指定緩存時間,如上例中將 200,302 應答緩存一小時,301 應答緩存 1 天,其他為 1 分鐘。5 l& w  Y/ s! t: j3 j+ B2 A
fastcgi_cache_min_uses 1;3 S8 ]( @, S- s" J/ i9 \; B
緩存在 fastcgi_cache_path 指令 inactive 參數值時間內的最少使用次數,如上例,如果在 5 分鐘內某文件 1 次也沒有被
- Q3 Y8 b$ c9 g+ v4 Q使用,那麼這個文件將被移除。
% N: R; C, q% i' s4 f, z) afastcgi_cache_use_stale error timeout invalid_header http_500;
0 l. N" i$ A4 }5 d; f# }不知道這個參數的作用,猜想應該是讓 nginx 知道哪些類型的緩存是沒用的。
- o* J; u; V1 S$ N7 B6 V) |以上為 nginx 中 FastCGI 相關參數,另外,FastCGI 自身也有一些配置需要進行優化,如果你使用 php-fpm 來管理
/ }+ D0 ~0 F2 H  gFastCGI,可以修改配置文件中的以下值:
1 ~% i3 A) N1 `<value name="max_children">60</value>
+ ]3 y+ L3 C' W同時處理的並發請求數,即它將開啟最多 60 個子線程來處理並發連接。
% P# C* z: ?+ b0 A1 O1 m! d<value name="rlimit_files">102400</value>* N; h4 o5 `+ ^$ _
最多打開文件數。  O0 P- }+ q0 u- }0 c' @6 Q
<value name="max_requests">204800</value>; u0 n& \4 x) @! w
每個進程在重置之前能夠執行的最多請求數。
. r; r* I0 O0 F( I5 }* }' F/ G( W! y. C5 a6 {

' I& y7 z  z& U/ [6 C4 R9 G參考資料:* G+ ~$ y& v$ R: d9 B
http://demo.ckan.org/dataset/daf ... /download/nginx.pdf  {3 a1 j1 P2 z. l
http://blog.chinaunix.net/u3/105004/showart_2087155.html- o, L3 u# ^, b) W
http://nginx.179401.cn/
4 C  Q+ ~# W4 q3 lhttp://blog.s135.com/nginx_php_v5/
% B4 h* X! |6 Ihttp://xyz.cinc.biz/2015/09/linux-nginx-php-fpm-connection.html  b  e# b+ d0 E: X8 ~- _4 B
https://www.netroby.com/view/3128. f, ]0 w% j, ^$ Z3 k) \& m! B
fastcgi 快取:4 n, N& }, d8 L# q. G- e
https://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/+ B1 ~, c0 s* r. u7 }
其他:$ g8 d% Y! c' t3 D/ m  z$ Y
nginx設定檔內參數的詳細說明: http://nginx.org/en/docs/http/ng ... l#keepalive_timeout* r, [% x2 S/ e5 I# L: \
nginx優化:http://www.jianshu.com/p/2184654ba4b2
9 z# |5 g; O; b: Ugzip壓縮功能以減少網路傳輸檔案大小:http://wenzhixin.net.cn/2013/11/10/server_gzip_on+ }0 V+ C5 ~, L1 c) `# X6 H

# H2 n3 t% ]& l. p5 }
  v/ i  k0 i1 x, L- Z+ s* O
6 `0 J0 c6 ]0 x! M. P3 d2 a
5 ~1 Q* b+ A3 T; m- K4 U
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則



中文酷站排行榜

本區塊內容依據『電腦網路內容分級處理辦法』為限制級網站,限定年滿18歲以上或達當地國家法定年齡人士方可進入,且願接受本站各項條款,未滿18歲 謝絕進入瀏覽。為防範未滿18歲之未成年網友瀏覽網路上限制級內容的圖文資訊,建議您可進行網路內容分級組織ICRA分級服務的安裝與設定。 (為還給愛護 本站的網友一個純淨的論壇環境,本站設有管理員)

QQ|小黑屋|手機板| 52AV手機A片王

GMT+8, 2026-3-23 18:31 , Processed in 0.110111 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回復 返回頂部 返回列表