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

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

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

[複製鏈接]
發表於 2016-10-1 22:08:34 | 顯示全部樓層 |閱讀模式
tid=48521&以CentOS 之 nginx的設定檔是在 /etc/nginx/nginx.conf
5 ]% ^' G  ]) q3 A一般來說 nginx 配置文件中對優化比較有作用的為以下幾項:
  P5 h3 w( M3 N9 `worker_processes 8;
$ B/ |9 L: j1 x4 `/ h* \  y6 F' {nginx 進程數,建議按照 cpu 數目來指定,一般為它的倍數。' p! \# l5 q5 t8 E) k, R
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
  a, e+ c3 K) s; C8 v8 T  ]6 u為每個進程分配 cpu,上例中將 8 個進程分配到 8 個 cpu,當然可以寫多個,或者將一個進程分配到多個 cpu。
# c% O7 {* Q: O* h* a) ~$ Tworker_rlimit_nofile 102400;
- ~) J) _2 N( `4 J. ^( r這個指令是指當一個 nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與 nginx 進程數
# V, n& [5 g$ A4 t$ m相除,但是 nginx 分配請求並不是那麼均勻,所以最好與 ulimit -n 的值保持一致。
& T2 ~* X2 i7 s/ Suse epoll;
. V$ F# O2 G' `7 F使用 epoll 的 I/O 模型,這個不用說了吧。
$ G/ `! c9 x1 pworker_connections 102400;, k" J8 V9 q' \; Y
每個進程允許的最多連接數,理論上每台 nginx 服務器的最大連接數為 worker_processes*worker_connections。9 _5 v7 l- p; e" n+ y0 r
keepalive_timeout 60;9 g# x3 ?7 }3 y- y# K, l  i! `
keepalive 超時時間。
- ~+ j  A* o. Z  uclient_header_buffer_size 4k;/ L3 N8 G2 W! g, Z2 K
客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過 1k,不過由- E! p" m# K, H0 T8 @3 R
於一般系統分頁都要大於 1k,所以這裡設置為分頁大小。分頁大小可以用命令 getconf PAGESIZE 取得。* \; M3 N# a! O7 m
open_file_cache max=102400 inactive=20s;
2 S, i& j$ Q: Z/ I% t這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時1 F+ J9 s; x1 e+ r
間文件沒被請求後刪除緩存。5 i9 k) O% [! G1 o" N4 A6 @6 x
open_file_cache_valid 30s;
8 j# f7 _7 z9 n1 V# k  G這個是指多長時間檢查一次緩存的有效信息。8 w* y, O8 U2 W5 f) n
open_file_cache_min_uses 1;# p( r3 z) \; b: U9 e" N5 Q
open_file_cache 指令中的 inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打2 G$ _4 `! k# r" F! B+ |& Y* l
開的,如上例,如果有一個文件在 inactive 時間內一次沒被使用,它將被移除。7 n* D0 K. V3 K# G
' L9 D- W9 a5 h; z2 T1 W
; W* a$ k9 |6 z- w( ^
關於內核參數的優化:& t0 c  X4 c9 _
net.ipv4.tcp_max_tw_buckets = 6000
( A4 y* V5 {) Y( _+ r, Wtimewait 的數量,默認是 180000。
/ ?# \- D- E, X  anet.ipv4.ip_local_port_range = 1024 65000
: d; t6 f4 J" D1 f允許系統打開的端口範圍。
6 O" d- P# i7 M' @net.ipv4.tcp_tw_recycle = 1  |, _; t% @) s8 J6 l
啟用 timewait 快速回收。$ H% W, W5 y- l" W& @& B
net.ipv4.tcp_tw_reuse = 1
( \, |( V, D% z: R7 w開啟重用。允許將 TIME-WAIT sockets 重新用於新的 TCP 連接。0 ^5 N5 X2 Z# p. O
net.ipv4.tcp_syncookies = 1' g( S% J3 w1 H: W( e% G# {
開啟 SYN Cookies,當出現 SYN 等待隊列溢出時,啟用 cookies 來處理。8 L' L/ y3 z* M3 [! p
net.core.somaxconn = 262144$ C, A8 V" }$ ~" @) d; Q5 r2 C
web 應用中 listen 函數的 backlog 默認會給我們內核參數的 net.core.somaxconn 限製到 128,而 nginx 定義的
7 `2 c7 v5 T7 d6 g5 c! YNGX_LISTEN_BACKLOG 默認為 511,所以有必要調整這個值。
- a3 Z2 G! R5 L( Z- wnet.core.netdev_max_backlog = 262144  H, D& K9 V7 o, q- l( N  G  [
每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。
9 d: r8 A" t% z# V) l5 P. }9 O3 hnet.ipv4.tcp_max_orphans = 262144
) ~, X& ^+ l' N2 l, d系統中最多有多少個 TCP 套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤兒連接將即刻被復位並打* Y1 M0 J2 [1 I: |! G( V5 z0 `
印出警告信息。這個限制僅僅是為了防止簡單的 DoS 攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值
# [4 K6 O0 ]6 X% N% P9 P. B# H(如果增加了內存之後)。
6 [6 V7 f" `0 d) H  t- pnet.ipv4.tcp_max_syn_backlog = 262144, b' G% D1 y, `$ d) K
記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對於有 128M 內存的系統而言,缺省值是 1024,小內存的系
8 ^# i) K( h9 }  I0 m1 f0 O統則是 128。6 a* t" j0 u1 c& w  d
net.ipv4.tcp_timestamps = 0
+ t0 s. }$ ~( G( i) M1 {2 o9 v* T時間戳可以避免序列號的捲繞。一個 1Gbps 的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的
! W! d& K4 \+ \5 I數據包。這裡需要將其關掉。1 R" |& C1 S# k
net.ipv4.tcp_synack_retries = 1
1 p) I3 k- X, G/ c' g為了打開對端的連接,內核需要發送一個 SYN 並附帶一個回應前面一個 SYN 的 ACK。也就是所謂三次握手中的第二次: S5 q% b' I5 `! M
握手。這個設置決定了內核放棄連接之前發送 SYN+ACK 包的數量。4 c& t7 M; l' [  C' ?$ U0 ~
net.ipv4.tcp_syn_retries = 1
" O2 B0 }+ @' D3 @( @( w, C在內核放棄建立連接之前發送 SYN 包的數量。2 p- d- [* o5 X' Q: e, y& ]( w9 F3 a
net.ipv4.tcp_fin_timeout = 1
  Q* K( _& o5 t9 {% m* x2 \: `- `如果套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間。對端可以出錯並永遠不關閉連接,甚
2 B8 z: m8 h( @' ^+ A0 w4 G9 ?至意外當機。缺省值是 60 秒。2.2 內核的通常值是 180 秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕2 p# g# N: Z) ^% \0 d/ X
載的 WEB 服務器,也有因為大量的死套接字而內存溢出的風險,FIN- WAIT-2 的危險性比 FIN-WAIT-1 要小,因為它最% p( I7 A( z  @9 i( w% T
多只能吃掉 1.5K 內存,但是它們的生存期長些。, B- W9 a' ~; J% f
net.ipv4.tcp_keepalive_time = 30+ A) f% A) _* L# c0 F
當 keepalive 起用的時候,TCP 發送 keepalive 消息的頻度。缺省是 2 小時。
1 U% }" X% D' }- O/ d" g/ o' u6 s7 y! I* P" }8 G5 A% e, G

$ r- x8 m# N7 a1 ]/ U' o下面貼一個完整的內核優化設置:
& H( L6 [" [7 L2 w( Z# ]' fnet.ipv4.ip_forward = 02 u- @) {# x8 N1 L+ L
net.ipv4.conf.default.rp_filter = 1
0 a* r9 M. K# vnet.ipv4.conf.default.accept_source_route = 00 e8 c* S/ F' k) U: S" I( m
kernel.sysrq = 0" Z& \. ~' Q% Z- g  Q4 t" S$ u
kernel.core_uses_pid = 1. P* `3 k" s1 k
net.ipv4.tcp_syncookies = 1
" U. [3 a+ g2 w4 c  I( r) {* \& fkernel.msgmnb = 65536% d' m: V7 X$ X. N* Z
kernel.msgmax = 655360 x6 l) B& c4 r+ u+ l2 q7 R
kernel.shmmax = 687194767362 m, e! f( s3 ~' m5 F
kernel.shmall = 4294967296
/ _2 k% q$ k( P) t( _3 n& A6 Anet.ipv4.tcp_max_tw_buckets = 6000
' \) r2 _, y( E- Onet.ipv4.tcp_sack = 1
- n7 I9 w" n8 S+ ?3 i; `net.ipv4.tcp_window_scaling = 1
$ |: b, {: T" q4 Tnet.ipv4.tcp_rmem = 4096 87380 41943043 l4 A! L/ Y/ x) W: k# B7 Y" v
net.ipv4.tcp_wmem = 4096 16384 4194304
; L" E5 {8 f1 ?  anet.core.wmem_default = 8388608. I9 q% W7 N. m( v! r
net.core.rmem_default = 8388608
4 Y  A0 O" k& I7 c. \net.core.rmem_max = 16777216- o4 L3 c# \; Q& z* A3 [0 i2 H$ C
net.core.wmem_max = 167772164 q  U: r% r: Y+ d, I( D2 V
net.core.netdev_max_backlog = 262144* U) Z1 @0 w% c7 A* \# }( ^/ a
net.core.somaxconn = 2621440 _# u  g$ P, Z) Y1 P$ X/ f
net.ipv4.tcp_max_orphans = 3276800, T; g) [  E+ t* @8 t
net.ipv4.tcp_max_syn_backlog = 262144" L1 K, ^& X7 ^
net.ipv4.tcp_timestamps = 0
/ s+ F; a" J2 O9 `. z" O8 G0 jnet.ipv4.tcp_synack_retries = 1
$ m" g* d  L0 a/ V9 n9 N9 N7 f! K6 anet.ipv4.tcp_syn_retries = 1
6 V7 i4 K: T6 T# g# l5 [  znet.ipv4.tcp_tw_recycle = 1
. y1 v8 _; y4 ]' @, z) wnet.ipv4.tcp_tw_reuse = 1  a! ~' j4 f" a9 V5 K) P
net.ipv4.tcp_mem = 94500000 915000000 927000000! O1 O; T/ I- i
net.ipv4.tcp_fin_timeout = 16 l3 m' G2 J: D
net.ipv4.tcp_keepalive_time = 30
7 k( e# m; v4 Q( J! y: f8 Cnet.ipv4.ip_local_port_range = 1024 65000
2 G0 e2 O& \1 {7 @% q/ k( T: Y5 E3 K8 W
( W" g0 `3 Y( e
下面是一個簡單的 nginx 配置文件:nginx.conf9 F6 v1 L7 l1 y( M* \0 i
user www www;' e3 B! V( ~; C8 m$ h/ T+ p% |, l! F& z
worker_processes 8;# C4 s8 @: `8 r( @3 b! p
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;' Y# O3 i4 G6 N
error_log /www/log/nginx_error.log crit;: r+ n4 S& \0 [6 U
pid /usr/local/nginx/nginx.pid;1 u/ Y$ c" U. Q" S
worker_rlimit_nofile 204800;
$ B  ^6 N( ~! L: K) Q* pevents
. f' a/ i; I! Q  r( \) {{
8 w. i, X; ~' G  use epoll;
! @2 ~, f  U, t" Q5 e( q  worker_connections 204800;
# N# j/ V' E9 \, G" B$ _( f}) G/ ~$ \* H1 O- j7 V; M2 h7 \2 \  q
http
- E! \; P( T, k1 K( X1 _{
6 ]+ P: o# z. d2 Hinclude mime.types;( Z- M: E* s8 o2 W
default_type application/octet-stream;
0 g2 s. r# z2 V* p$ X. ^ charset utf-8;, I/ m  o# @2 `3 h. Q$ l
server_names_hash_bucket_size 128;
- a& i% _& Q; O/ b4 `3 g9 ?8 |1 k client_header_buffer_size 2k;
" f4 h5 }0 h; Y  \" ]" m large_client_header_buffers 4 4k;
) ]; S$ u  R7 S  L, N client_max_body_size 8m;( u9 e9 v4 v# N% j- N7 q0 y  _
sendfile on;
. f$ ]/ V" z" d tcp_nopush on;! @( f1 D1 h: Z5 E7 D6 ~
keepalive_timeout 60;  g9 [: D; N( L7 n' r5 q- [
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
3 a3 g' m8 a) H6 I% K fastcgi_connect_timeout 300;
9 M8 @0 ^: C! y# \0 d: ?3 U fastcgi_send_timeout 300;# ?, t* E; i9 B& j% |
fastcgi_read_timeout 300;
' H6 H+ G' L  L# ~( f* L0 ^* Z fastcgi_buffer_size 16k;
+ H$ x/ n' Z( M) X% i( x6 U fastcgi_buffers 16 16k;1 |& d+ A( h: f6 J9 F3 N
fastcgi_busy_buffers_size 16k;# @& @- p  \4 r: t
fastcgi_temp_file_write_size 16k;- n1 W0 O7 I; y% U2 ]: E* I/ q
fastcgi_cache TEST;
& Q: B, r. N3 A fastcgi_cache_valid 200 302 1h;
0 q8 W5 y( g5 F9 m) r fastcgi_cache_valid 301 1d;
5 {& g+ S% I+ u fastcgi_cache_valid any 1m;
; x$ d3 Z8 K9 e/ @% w fastcgi_cache_min_uses 1;
) I, R$ u, ]  g8 w' B8 ? fastcgi_cache_use_stale error timeout invalid_header http_500;
8 j) E4 I/ S, L' J, H open_file_cache max=204800 inactive=20s;8 k5 H- u' Z% _& j6 s5 {9 W
open_file_cache_min_uses 1;
" }5 C) u! i9 \" c+ C: J open_file_cache_valid 30s;2 f  S- I4 m/ ?
tcp_nodelay on;; t$ t% D( M1 ~( Z% A) r# ]
gzip on;6 a. C7 [  C% H' V5 q0 ]
gzip_min_length 1k;
  r2 x7 C' e% g gzip_buffers 4 16k;
7 s$ l. I6 k6 y+ w' u5 A+ g  { gzip_http_version 1.0;
3 N' d# M. e. G gzip_comp_level 2;
  |  C9 ?0 G9 w, |+ x, p) J; Q  v gzip_types text/plain application/x-javascript text/css application/xml;
: t4 e" F9 l. m: u2 }! z$ x gzip_vary on;
/ |& S' b! x) I1 O: s9 G5 q server& c5 z  Q. J- z6 O( |! j3 H
{! [1 L1 S3 i5 z3 ]
listen 8080;
6 s/ _2 F" a; X server_name backup.aiju.com;" H# R, C0 ?3 K" L3 n' Y# \% D: E$ i
index index.php index.htm;' R5 e4 j. j* x3 U+ s& _
root /www/html/;# ?( E; l6 x2 Z* X
location /status  J% A$ |9 c# W
{
0 j% R5 _; K- i3 @  z; _) ^6 x1 a stub_status on;- @3 B7 o, a/ E  _% z# l3 p
}6 ^. P# O; k5 G2 @- [% ]
location ~ .*\.(php|php5)?$
% K' E( ]/ }( n! y- I% d) x: x( C {
4 ?# b$ [0 P: A8 b fastcgi_pass 127.0.0.1:9000;
+ n1 r" B( u" k% F/ N& S' k fastcgi_index index.php;
2 B* T8 P( \4 t' L5 y include fcgi.conf;5 Y& j* F3 i6 W( S" l8 Z" z
}
4 M: Y! B& t# }8 Y3 c location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$+ G' S& A' J8 }7 ~+ s
{7 f7 l. B0 v  Z+ X2 D
expires 30d;
7 j4 ~* ~# z, l2 W# w, A0 b9 S* r }* W" O; \7 ^3 g" I
log_format access '$remote_addr - $remote_user [$time_local] "$request" '1 D1 H9 c- P9 e( D
'$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';
3 n# i1 v: g# k, V. E# r5 x access_log /www/log/access.log access;: |8 a2 H2 _, X7 @, v9 _8 H! C& X
}1 H, y% E5 P( C- h
}
! y( z( L* ?) Y9 V% `* S+ O
. j% v5 O& O& n) {4 e關於 FastCGI 的幾個指令:
. f, v# V4 K# F( v3 bfastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;2 S( K( O7 b( N+ ~. R
這個指令為 FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。
7 F" k7 Z* K7 l6 `9 x6 Zfastcgi_connect_timeout 300;
2 q: U) D4 j( y指定連接到後端 FastCGI 的超時時間。5 N) [8 G8 r0 ~% ~0 E3 a: {
fastcgi_send_timeout 300;" d6 S3 d5 E7 v6 g2 c. ]5 d
向 FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向 FastCGI 傳送請求的超時時間。( J8 k1 y# {( k
fastcgi_read_timeout 300;: d7 f3 P1 v% s4 p/ x
接收 FastCGI 應答的超時時間,這個值是指已經完成兩次握手後接收 FastCGI 應答的超時時間。7 G4 E# X3 W. N6 B- j$ ?( G* e9 E* `
fastcgi_buffer_size 16k;
8 W% w+ X) `/ V" B6 t8 P9 n: d指定讀取 FastCGI 應答第一部分需要用多大的緩衝區,這裡可以設置為 fastcgi_buffers 指令指定的緩衝區大小,上面的0 B" r$ t) U, Y
指令指定它將使用 1 個 16k 的緩衝區去讀取應答的第一部分,即應答頭,其實這個應答頭一般情況下都很小(不會超過
6 f& R  [" Q; Y. k5 M1k),但是你如果在 fastcgi_buffers 指令中指定了緩衝區的大小,那麼它也會分配一個 fastcgi_buffers 指定的緩衝區大0 O# m/ o7 u0 q5 m$ X# R
小去緩存。
: w' l# H0 R! I* ^3 xfastcgi_buffers 16 16k;
$ V/ C' P5 m, a5 c- z" Z( S指定本地需要用多少和多大的緩衝區來緩衝 FastCGI 的應答,如上所示,如果一個 php 腳本所產生的頁面大小為 256k,
7 i" L) Y! o$ T& P" p0 t% l則會為其分配 16 個 16k 的緩衝區來緩存,如果大於 256k ,增大於 256k 的部分會緩存到 fastcgi_temp 指定的路徑中,, q! \7 T: l( Q% \3 U' ^8 [
當然這對服務器負載來說是不明智的方案,因為內存中處理數據速度要快於硬盤,通常這個值的設置應該選擇一個你的9 L, i9 l" T- ^- S  J" [7 _
站點中的 php 腳本所產生的頁面大小的中間值,比如你的站點大部分腳本所產生的頁面大小為 256k 就可以把這個值設
+ r* o7 {! A+ M4 N- @8 a置為 16 16k,或者 4 64k 或者 64 4k,但很顯然,後兩種並不是好的設置方法,因為如果產生的頁面只有 32k,如果用 4
, N" m$ ]  X% d, J7 o: L( I64k 它會分配 1 個 64k 的緩衝區去緩存,而如果使用 64 4k 它會分配 8 個 4k 的緩衝區去緩存,而如果使用 16 16k 則它5 v8 E$ S, M1 p& s# c8 `! H& C: T
會分配 2 個 16k 去緩存頁面,這樣看起來似乎更加合理。! q9 m  B. ]' c' E6 _  `
fastcgi_busy_buffers_size 32k;+ E+ i1 q) x, J2 n
這個指令我也不知道是做什麼用,只知道默認值是 fastcgi_buffers 的兩倍。1 {  p8 {* G9 _$ ^8 g
fastcgi_temp_file_write_size 32k;8 i1 s% J$ f- c
在寫入 fastcgi_temp_path 時將用多大的數據塊,默認值是 fastcgi_buffers 的兩倍。! M# T* ~' C- |1 E+ V0 `" a8 U' R
fastcgi_cache TEST% D. H  a; A; B- V& P
開啟 FastCGI 緩存並且為其製定一個名稱。個人感覺開啟緩存非常有用,可以有效降低 CPU 負載,並且防止 502 錯誤。
* V8 u% S- n4 H8 K/ J1 a但是這個緩存會引起很多問題,因為它緩存的是動態頁面。具體使用還需根據自己的需求。
3 i4 x! S! u1 W+ M# y% |fastcgi_cache_valid 200 302 1h;
) T$ u! Z! W, \fastcgi_cache_valid 301 1d;3 M" p7 _6 {- s* O/ T6 {
fastcgi_cache_valid any 1m;9 B* U  @3 N" D" R$ V7 r" p
為指定的應答代碼指定緩存時間,如上例中將 200,302 應答緩存一小時,301 應答緩存 1 天,其他為 1 分鐘。
  M' ?+ h8 A/ E$ \8 p, Cfastcgi_cache_min_uses 1;$ G* N2 o% X! G( M* C9 k
緩存在 fastcgi_cache_path 指令 inactive 參數值時間內的最少使用次數,如上例,如果在 5 分鐘內某文件 1 次也沒有被
' I3 u5 x: i; E# `3 B3 [使用,那麼這個文件將被移除。
$ N' \( L/ t% ?fastcgi_cache_use_stale error timeout invalid_header http_500;
9 E) F& S: e* i( q$ ~不知道這個參數的作用,猜想應該是讓 nginx 知道哪些類型的緩存是沒用的。0 z. @# I, n1 \$ e0 r8 Q
以上為 nginx 中 FastCGI 相關參數,另外,FastCGI 自身也有一些配置需要進行優化,如果你使用 php-fpm 來管理; j( {# |9 q/ G; C( H3 u2 t1 k
FastCGI,可以修改配置文件中的以下值:- f: @; d5 q' Q' V2 v, ~( e" p
<value name="max_children">60</value>) S" N- X  P- K5 q
同時處理的並發請求數,即它將開啟最多 60 個子線程來處理並發連接。1 M  [' Z7 S% B  L6 ~0 Z
<value name="rlimit_files">102400</value>
' l: G/ Z( \! \) W' x最多打開文件數。: @! i0 X- O+ Z& r7 ?" R% e
<value name="max_requests">204800</value>% u- m& g3 m4 }" n7 {$ q4 t+ i
每個進程在重置之前能夠執行的最多請求數。
1 A* D1 Y* U& h! i: }& N, }
3 _: w& W% T4 `7 b
7 S4 c6 w0 J6 h6 u# k4 A參考資料:
. V5 f! n9 n, f  C# rhttp://demo.ckan.org/dataset/daf ... /download/nginx.pdf! b0 z: X% {6 o5 e/ @& Q2 F
http://blog.chinaunix.net/u3/105004/showart_2087155.html# O3 D# [. U' K; K
http://nginx.179401.cn/+ K  x* \/ O9 S6 q
http://blog.s135.com/nginx_php_v5/) O0 U% n; z3 \7 X* F
http://xyz.cinc.biz/2015/09/linux-nginx-php-fpm-connection.html
3 q. {" c; [& C$ E$ d3 O2 lhttps://www.netroby.com/view/3128
+ i! \' Q0 X. X4 o( {- Zfastcgi 快取:* `6 K. S: g6 i5 }; D
https://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/
. z/ `' {. T9 l7 i, K- C/ F' E
其他:
% |4 {  M0 h. t0 C" p+ h( ]; \nginx設定檔內參數的詳細說明: http://nginx.org/en/docs/http/ng ... l#keepalive_timeout$ Z# b# `0 F+ U8 G/ N
nginx優化:http://www.jianshu.com/p/2184654ba4b2
) x5 I; j# h+ _9 g  |+ d  fgzip壓縮功能以減少網路傳輸檔案大小:http://wenzhixin.net.cn/2013/11/10/server_gzip_on9 ]  V  L( H- ^
. r" z8 f8 u- ]
; F. ]% C2 @! H) G
/ _% L) p! i) Q* C( K4 p

! G6 q( h, q% n" J# J# d
回復

使用道具 舉報

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

本版積分規則



中文酷站排行榜

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

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

GMT+8, 2024-10-29 04:24 , Processed in 0.102734 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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