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

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

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

[複製鏈接]
發表於 2016-10-1 22:08:34 | 顯示全部樓層 |閱讀模式
tid=48521&以CentOS 之 nginx的設定檔是在 /etc/nginx/nginx.conf9 ~. {) T3 E9 P4 B) w' K; X" [& z
一般來說 nginx 配置文件中對優化比較有作用的為以下幾項:
" R" O0 }( r4 y. j& j7 W1 qworker_processes 8;$ }1 F$ v3 n3 c. |$ ^* \
nginx 進程數,建議按照 cpu 數目來指定,一般為它的倍數。( d9 t( m7 [# x) k
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
: E! p' E& R6 j. e5 s為每個進程分配 cpu,上例中將 8 個進程分配到 8 個 cpu,當然可以寫多個,或者將一個進程分配到多個 cpu。
, ?# R  U5 [: J3 k+ Xworker_rlimit_nofile 102400;& _$ x7 ], \) ?4 K9 K
這個指令是指當一個 nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與 nginx 進程數
) S, r) g0 N: [' t" z( p相除,但是 nginx 分配請求並不是那麼均勻,所以最好與 ulimit -n 的值保持一致。
. m0 \& b5 W0 N1 a$ ~' g* ^use epoll;- X9 A2 r" {- |2 O( g9 e! X2 E2 U
使用 epoll 的 I/O 模型,這個不用說了吧。) g: D. n2 H& H3 ?3 |" v
worker_connections 102400;
9 d! j% e$ N( ?' i  Y/ m9 B每個進程允許的最多連接數,理論上每台 nginx 服務器的最大連接數為 worker_processes*worker_connections。& v, q/ g& t. z6 l; C6 C5 F
keepalive_timeout 60;
& @5 ^. g# Z% m; n" V& ikeepalive 超時時間。
$ D9 |4 \6 q6 Hclient_header_buffer_size 4k;
1 _' U, k* U4 h客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過 1k,不過由  }& n2 J  f4 H
於一般系統分頁都要大於 1k,所以這裡設置為分頁大小。分頁大小可以用命令 getconf PAGESIZE 取得。. S5 F2 ?8 t  ]( c/ b! S% q/ i/ P8 x
open_file_cache max=102400 inactive=20s;* X7 [3 s+ C1 m" V
這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時4 j0 f9 y. W: |8 o! G
間文件沒被請求後刪除緩存。
' u+ O) p  I8 q; P( lopen_file_cache_valid 30s;& I0 ?6 E& K- K  C5 Z
這個是指多長時間檢查一次緩存的有效信息。: \' D) B, ~( v. c% s1 h
open_file_cache_min_uses 1;: \: L- L3 n; e+ f) {" k' k3 b
open_file_cache 指令中的 inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打! J7 z' w3 e) S5 a' }
開的,如上例,如果有一個文件在 inactive 時間內一次沒被使用,它將被移除。
% w$ r0 R+ i9 |+ _' S
0 F% j, A; U; f2 _  H, Y2 Y+ s6 X
關於內核參數的優化:/ M* n+ _5 a5 @$ `) _* T. s' n
net.ipv4.tcp_max_tw_buckets = 6000& {: x+ A- U$ ~' m* |$ Z0 H; r0 p
timewait 的數量,默認是 180000。( j( d+ y2 X1 d% |7 b8 s6 h) t
net.ipv4.ip_local_port_range = 1024 65000
- W, \# J8 b# h, t8 b# |/ [: }允許系統打開的端口範圍。
8 g! b7 V/ [/ g' K' C. P* G; inet.ipv4.tcp_tw_recycle = 1
' ~. f7 p, ?8 a3 E啟用 timewait 快速回收。
$ t6 y" ]' t4 B: unet.ipv4.tcp_tw_reuse = 1+ W! [" f* n; c, `1 r
開啟重用。允許將 TIME-WAIT sockets 重新用於新的 TCP 連接。
6 ^4 P& T1 z( |7 Inet.ipv4.tcp_syncookies = 1& E* @7 r+ G: [8 D! \
開啟 SYN Cookies,當出現 SYN 等待隊列溢出時,啟用 cookies 來處理。; ^- {  m8 z) Y6 g6 M
net.core.somaxconn = 262144
  h# W4 E! c- A5 v- _% B  qweb 應用中 listen 函數的 backlog 默認會給我們內核參數的 net.core.somaxconn 限製到 128,而 nginx 定義的& L% v. X( k+ W2 k$ ^" H$ J
NGX_LISTEN_BACKLOG 默認為 511,所以有必要調整這個值。8 n* e1 _. n0 K4 U; _
net.core.netdev_max_backlog = 262144/ @# A' Z% A0 f# P& L+ C
每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。' \1 O& o, ~5 S
net.ipv4.tcp_max_orphans = 262144+ o7 T0 h$ N& A. U
系統中最多有多少個 TCP 套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤兒連接將即刻被復位並打2 N- ~' i6 v& k0 {7 K- Q0 I- a
印出警告信息。這個限制僅僅是為了防止簡單的 DoS 攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值# G1 F4 i, V+ o. J' P
(如果增加了內存之後)。- p$ X) Q2 ?: `
net.ipv4.tcp_max_syn_backlog = 262144* S+ w4 q3 z  g$ b
記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對於有 128M 內存的系統而言,缺省值是 1024,小內存的系0 h  M; D) z* Q  T. q! o
統則是 128。
1 @) ?9 ^& |  r3 U1 ~4 }- ]net.ipv4.tcp_timestamps = 0
, e( g2 i5 Y4 \: S8 N/ J5 p時間戳可以避免序列號的捲繞。一個 1Gbps 的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的
( h% \; P% L3 V6 s& Y數據包。這裡需要將其關掉。. g6 J" d, w0 @3 T/ V$ A
net.ipv4.tcp_synack_retries = 1
" |, M9 \# u  t+ Q0 J5 Y+ [為了打開對端的連接,內核需要發送一個 SYN 並附帶一個回應前面一個 SYN 的 ACK。也就是所謂三次握手中的第二次
/ [( e" O* p6 x  @' T2 b) H握手。這個設置決定了內核放棄連接之前發送 SYN+ACK 包的數量。
  \; P4 F- x9 R3 Enet.ipv4.tcp_syn_retries = 1
+ u: ]  E# O4 {' M) N7 Z) e在內核放棄建立連接之前發送 SYN 包的數量。
, O$ }5 a6 o* k0 L) H# |4 F1 [net.ipv4.tcp_fin_timeout = 1
7 H2 ]& d2 p4 }) Y' h如果套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間。對端可以出錯並永遠不關閉連接,甚) Z- v" ]+ @' X9 y
至意外當機。缺省值是 60 秒。2.2 內核的通常值是 180 秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕
/ q: n- c  U4 i& m) b9 v5 K載的 WEB 服務器,也有因為大量的死套接字而內存溢出的風險,FIN- WAIT-2 的危險性比 FIN-WAIT-1 要小,因為它最
7 ]$ E4 X% W! M, b( P# I# ]. T8 _多只能吃掉 1.5K 內存,但是它們的生存期長些。
. ~  U6 h8 Y1 z. Snet.ipv4.tcp_keepalive_time = 306 A/ d7 I' \/ X# y' O0 q
當 keepalive 起用的時候,TCP 發送 keepalive 消息的頻度。缺省是 2 小時。/ ~0 L0 s6 f0 I( n; Y2 ~# d

" a0 f! J7 Z( S* h! r
: A' w" \- L5 D8 k5 c; m下面貼一個完整的內核優化設置:
0 A  h/ t" n( b; f/ j2 D3 Vnet.ipv4.ip_forward = 0: d1 C8 ^; e! a
net.ipv4.conf.default.rp_filter = 1
. X3 S5 O- y4 Onet.ipv4.conf.default.accept_source_route = 0
+ ^! u; c# ~% A: g* Y( q* `kernel.sysrq = 08 J* {  v* M- O2 ?+ K$ K: Q
kernel.core_uses_pid = 19 i6 w+ c% l! q0 e) q& p8 b2 g
net.ipv4.tcp_syncookies = 17 Z; V  f+ _! G; l  J
kernel.msgmnb = 65536+ a; |+ J; v' [& v; `6 K
kernel.msgmax = 655367 I' X1 K) ]3 r% O' x
kernel.shmmax = 68719476736. ^' Z7 A2 n6 R9 Z
kernel.shmall = 4294967296: m% n2 a! e; j! |8 p
net.ipv4.tcp_max_tw_buckets = 60003 z9 }  o2 [* J/ Z
net.ipv4.tcp_sack = 1
" \1 T" f- }- I# Jnet.ipv4.tcp_window_scaling = 1  ^* [% V" }, L* h5 s
net.ipv4.tcp_rmem = 4096 87380 41943046 l( v6 {% k& ^+ ~
net.ipv4.tcp_wmem = 4096 16384 4194304* P% Y+ @& g2 y2 C1 M
net.core.wmem_default = 8388608$ {* d& E$ |* o* `8 x! `- J
net.core.rmem_default = 8388608
7 V5 H3 a6 ^0 E, r3 t1 B+ C: E, {net.core.rmem_max = 167772165 ~! [/ O, p  ~; S" s2 w
net.core.wmem_max = 16777216# Z# _2 F* o2 _* ]
net.core.netdev_max_backlog = 262144; D: P9 r4 C& R/ @1 p) w
net.core.somaxconn = 262144
3 t, h! B* o# G7 |+ j" anet.ipv4.tcp_max_orphans = 3276800
. {4 d( o6 W3 S1 pnet.ipv4.tcp_max_syn_backlog = 262144
" w$ U; e/ n3 {4 m8 u  k' cnet.ipv4.tcp_timestamps = 0' i0 Q/ g& H9 S6 F, i9 b' z+ b
net.ipv4.tcp_synack_retries = 1
. |3 d% \% |  J' J- Tnet.ipv4.tcp_syn_retries = 1% o& U& I! |, d# g
net.ipv4.tcp_tw_recycle = 1
" Y+ F2 u( a+ y6 U1 fnet.ipv4.tcp_tw_reuse = 1% v1 e; {) H* i  ]
net.ipv4.tcp_mem = 94500000 915000000 927000000
/ N- u1 a3 }- r1 g' fnet.ipv4.tcp_fin_timeout = 16 x& O3 ~* L9 J% G5 R
net.ipv4.tcp_keepalive_time = 30" i- u- j0 y" n, G7 \, p$ X
net.ipv4.ip_local_port_range = 1024 65000/ C3 O4 ?" A% S

; A/ s7 A7 [# m4 p
' E. W, L1 o* ?! E# s% \下面是一個簡單的 nginx 配置文件:nginx.conf& c4 g& C1 R# u
user www www;  M8 V% s" K& b) `% \( K6 C
worker_processes 8;
5 b& ~: k& V2 z8 m* Nworker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;
" ~9 p) o- w, {error_log /www/log/nginx_error.log crit;
3 v5 ^0 R, W+ z$ Gpid /usr/local/nginx/nginx.pid;
5 I; K" o0 x& R* a( zworker_rlimit_nofile 204800;
0 S7 J1 ~( s. k1 d  k2 G! p% `events* e% s$ [0 G! i$ Z
{
2 [$ o6 j/ H2 d0 N& V; d* ^  use epoll;8 G$ j# \; e( u! o
  worker_connections 204800;$ }2 `' _, m4 T
}
& G- V2 F4 S9 Q8 A7 Zhttp/ C6 U. T4 W* X
{
( Q$ V4 y6 C# X2 L2 Binclude mime.types;) t7 ~. _; D: j1 ]% u! _* l0 \0 y
default_type application/octet-stream;
: q( a0 {) w+ z( e charset utf-8;
9 n: ~8 G6 u! X( S+ F. P  E server_names_hash_bucket_size 128;
, p6 A1 n9 m; } client_header_buffer_size 2k;( {; V; e) @! \& U& T! l
large_client_header_buffers 4 4k;! W: ~1 z' ]4 t2 G# v: Q
client_max_body_size 8m;, m7 O! b8 q* e/ Y! v
sendfile on;' w0 ?" k. ~/ W" O6 \( k6 N
tcp_nopush on;8 m  _1 h! D0 m) q6 E) D9 }! `! b
keepalive_timeout 60;. w9 V$ R; F* Y
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
4 I" M% C; w9 r3 Y fastcgi_connect_timeout 300;4 O$ m" J$ m- s: N7 V2 L- X) `
fastcgi_send_timeout 300;. |  I+ x; ^+ e) z5 G# s/ T
fastcgi_read_timeout 300;
; \1 X4 g! L5 ` fastcgi_buffer_size 16k;9 Q* G8 x" d7 v+ l7 N& R8 }3 H* M
fastcgi_buffers 16 16k;
7 s) C$ [/ I& @6 H- K8 G fastcgi_busy_buffers_size 16k;$ m- q: C7 R+ C' W0 q( L
fastcgi_temp_file_write_size 16k;# V- c, @! H) Z
fastcgi_cache TEST;8 c' Y( x! C2 j2 T
fastcgi_cache_valid 200 302 1h;
+ \+ o0 C. |  ]% R' i9 ? fastcgi_cache_valid 301 1d;
+ K4 m/ x* C9 }+ } fastcgi_cache_valid any 1m;: X7 l* B) s1 q3 ?# y% h
fastcgi_cache_min_uses 1;
4 f3 |$ k& g, m1 |6 V6 T% \ fastcgi_cache_use_stale error timeout invalid_header http_500;
8 Z1 R# H5 f1 o9 D open_file_cache max=204800 inactive=20s;7 F7 a6 {4 u0 e! A2 q, N6 S/ {
open_file_cache_min_uses 1;
* x" B" ?, g# W8 K- l) U open_file_cache_valid 30s;$ S, e' o9 F' k3 y( X7 ]
tcp_nodelay on;
7 I. u, ^2 C6 r! [: q3 D gzip on;, d3 |, S/ H9 U$ |
gzip_min_length 1k;
7 x) ^* X3 N) r4 L6 H( K gzip_buffers 4 16k;3 P, k& u% h2 W% V, k  ~8 k
gzip_http_version 1.0;' G7 U6 E  {0 t3 K' Z! }* S: z" |
gzip_comp_level 2;
/ Q6 {( Y: [" K- p" k gzip_types text/plain application/x-javascript text/css application/xml;
/ |$ f4 m; F7 n" [8 S: A2 I8 ^ gzip_vary on;
' F+ X! a; {7 o# o$ J server* I8 T+ _: v0 r; U
{
  o; F* `0 P4 l' D* A7 w( Z listen 8080;) X1 B& @: u! B8 D& t3 g1 }+ w2 v
server_name backup.aiju.com;
/ V& [" P/ |6 a( q! t8 q index index.php index.htm;: s! y( F( B5 K* u8 N" V
root /www/html/;
6 ~/ I, Z& f' n. e location /status
( u0 r* i% c/ x0 n5 Y! `3 J) l2 D {
3 k, `0 z1 j. u# k5 v2 p stub_status on;
! N. ]" \1 H9 z: h }
& w9 R5 m9 c$ e. U location ~ .*\.(php|php5)?$6 B$ }' n1 N& A  |8 {! y
{/ p( n2 M6 I# B0 s! r
fastcgi_pass 127.0.0.1:9000;+ N; X9 g8 v2 D  F( x
fastcgi_index index.php;
- Z$ p1 `" J( ]- O include fcgi.conf;
4 l! c! d0 J& d& P }$ h( E" A+ ^# X' W8 P  o4 k5 J4 A
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
4 b/ s7 u) F+ d9 Z9 V6 O9 j {
, d7 \  r2 |8 `( T$ Y: s) d expires 30d;0 }4 W( {& Y8 Q% y7 a7 Z
}* c- \% S  q5 ~8 K: U
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
$ _2 f5 ^. w& h/ R1 R '$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';) \( l, K; T3 p) {
access_log /www/log/access.log access;+ |' O5 [+ R4 b6 ~
}) a( O7 w7 C1 x9 c7 Y. m. w7 \
}& d" u% t. ^7 E6 A! [! R4 |
4 Q( H8 K5 V& ]# w8 \3 g
關於 FastCGI 的幾個指令:& o3 |2 z0 K5 o' a
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;' P. W/ O* ~+ U. }) Z
這個指令為 FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。* }+ l- f3 f( @' Y6 a
fastcgi_connect_timeout 300;
' Y2 H' A8 ]$ Q( B  E指定連接到後端 FastCGI 的超時時間。
! q% _3 S; O$ B; j) Mfastcgi_send_timeout 300;' x% `; \. f( w' f' u0 w
向 FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向 FastCGI 傳送請求的超時時間。* H! O. A2 }8 Y# [8 r$ U. B( m
fastcgi_read_timeout 300;
# {" l( ^$ j" `, X8 ~接收 FastCGI 應答的超時時間,這個值是指已經完成兩次握手後接收 FastCGI 應答的超時時間。9 \/ ]" L, Y8 T# e) ?/ V* |. v5 a
fastcgi_buffer_size 16k;+ b: M' F  u  p2 O8 P
指定讀取 FastCGI 應答第一部分需要用多大的緩衝區,這裡可以設置為 fastcgi_buffers 指令指定的緩衝區大小,上面的
( Y" Z9 n( [/ C, Z* b- j" t指令指定它將使用 1 個 16k 的緩衝區去讀取應答的第一部分,即應答頭,其實這個應答頭一般情況下都很小(不會超過3 l+ }: Q) P" a) x" s
1k),但是你如果在 fastcgi_buffers 指令中指定了緩衝區的大小,那麼它也會分配一個 fastcgi_buffers 指定的緩衝區大
. j1 h8 }9 ~1 Q; X. o" I- ^' j小去緩存。. ]# L3 L) e" C  _  `6 C
fastcgi_buffers 16 16k;& j) S  ?* o  z) D
指定本地需要用多少和多大的緩衝區來緩衝 FastCGI 的應答,如上所示,如果一個 php 腳本所產生的頁面大小為 256k," B: B; S8 r* Q! w0 [9 X( [) Z+ H
則會為其分配 16 個 16k 的緩衝區來緩存,如果大於 256k ,增大於 256k 的部分會緩存到 fastcgi_temp 指定的路徑中,. u: b# d* h( u: r+ U7 l. Q, G; W0 ?
當然這對服務器負載來說是不明智的方案,因為內存中處理數據速度要快於硬盤,通常這個值的設置應該選擇一個你的
: A) a' \$ b+ i( ^5 P2 i$ s" k站點中的 php 腳本所產生的頁面大小的中間值,比如你的站點大部分腳本所產生的頁面大小為 256k 就可以把這個值設" |5 Y7 N4 V( R. O. f5 m
置為 16 16k,或者 4 64k 或者 64 4k,但很顯然,後兩種並不是好的設置方法,因為如果產生的頁面只有 32k,如果用 4) ^" E1 }- ]. C
64k 它會分配 1 個 64k 的緩衝區去緩存,而如果使用 64 4k 它會分配 8 個 4k 的緩衝區去緩存,而如果使用 16 16k 則它
" _9 Y0 [, |: F  q會分配 2 個 16k 去緩存頁面,這樣看起來似乎更加合理。: q1 d! j, \3 x# f
fastcgi_busy_buffers_size 32k;
. ^) i3 W5 w, |這個指令我也不知道是做什麼用,只知道默認值是 fastcgi_buffers 的兩倍。
6 L- i7 `8 x- {: k" [fastcgi_temp_file_write_size 32k;2 x+ W/ m6 `6 w. K4 S3 N  J; r
在寫入 fastcgi_temp_path 時將用多大的數據塊,默認值是 fastcgi_buffers 的兩倍。4 ~, Q) k% Q8 ?0 r3 A
fastcgi_cache TEST7 t: C# `* O9 _' Z9 h
開啟 FastCGI 緩存並且為其製定一個名稱。個人感覺開啟緩存非常有用,可以有效降低 CPU 負載,並且防止 502 錯誤。& N/ j! r0 y3 |6 L: y- B1 w
但是這個緩存會引起很多問題,因為它緩存的是動態頁面。具體使用還需根據自己的需求。3 {5 A9 d- i8 X* K4 `* g! H
fastcgi_cache_valid 200 302 1h;6 x- H6 p4 S+ @9 }! }
fastcgi_cache_valid 301 1d;( r; v& n# Q+ ~2 w7 I* u
fastcgi_cache_valid any 1m;, d, d$ t! m5 G+ g
為指定的應答代碼指定緩存時間,如上例中將 200,302 應答緩存一小時,301 應答緩存 1 天,其他為 1 分鐘。8 N9 l* |, S* |* v( k/ y  p; M9 @6 H" S# i
fastcgi_cache_min_uses 1;2 K9 O) @- o' Q( j
緩存在 fastcgi_cache_path 指令 inactive 參數值時間內的最少使用次數,如上例,如果在 5 分鐘內某文件 1 次也沒有被
9 ]9 w5 A# z6 s4 D# T3 ]1 b使用,那麼這個文件將被移除。
8 Q: C! P/ P" j7 ~. z- yfastcgi_cache_use_stale error timeout invalid_header http_500;* l  A5 S. @. l8 H* D8 M5 P
不知道這個參數的作用,猜想應該是讓 nginx 知道哪些類型的緩存是沒用的。! h1 q; u- O  O$ B9 e- J% T& y7 A" K
以上為 nginx 中 FastCGI 相關參數,另外,FastCGI 自身也有一些配置需要進行優化,如果你使用 php-fpm 來管理3 r4 D( ]$ s: s% `1 l( i& [
FastCGI,可以修改配置文件中的以下值:
8 W# `& c, z7 g8 o2 x+ p3 ^# X( D<value name="max_children">60</value>* W3 K: ^: Q5 ?4 g! d+ a' o2 H
同時處理的並發請求數,即它將開啟最多 60 個子線程來處理並發連接。. ]& X3 s$ p9 `0 T+ j
<value name="rlimit_files">102400</value>5 S& C' `( ?1 o: a; x+ r
最多打開文件數。- e: O* k+ N* A, e
<value name="max_requests">204800</value>
, k6 K* A" X1 v: W7 d( w4 o每個進程在重置之前能夠執行的最多請求數。) f; j& j5 P* F/ S8 @! w

" ~$ ?+ b7 @( y8 T( W3 J
4 a: U( s; m5 k' {4 q; o參考資料:
, D7 F" ^" @' ?- O* whttp://demo.ckan.org/dataset/daf ... /download/nginx.pdf
3 [  F# ~: c1 u- Yhttp://blog.chinaunix.net/u3/105004/showart_2087155.html
* w- k1 N( Q; d, r' N/ o4 Shttp://nginx.179401.cn/
. v5 p3 e$ {: E) G  x. Uhttp://blog.s135.com/nginx_php_v5/( b! [( W/ E- ~+ ?
http://xyz.cinc.biz/2015/09/linux-nginx-php-fpm-connection.html
8 m) }9 I# \& l7 Z0 mhttps://www.netroby.com/view/3128
  Y' p& f# I3 ufastcgi 快取:$ a1 Z5 \! q7 P+ d. U4 H
https://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/( }/ p# ]3 z4 |2 o% f8 {
其他:7 F8 U1 ]/ S' Q- s. f4 L( y3 O7 R
nginx設定檔內參數的詳細說明: http://nginx.org/en/docs/http/ng ... l#keepalive_timeout4 D$ y# b& f# X: j% |9 C
nginx優化:http://www.jianshu.com/p/2184654ba4b2
6 N  ?. O' b, o  dgzip壓縮功能以減少網路傳輸檔案大小:http://wenzhixin.net.cn/2013/11/10/server_gzip_on
* c/ W' R  H3 i
! A, D6 d( W% S4 M1 c- @- @

+ K! N" a& w! c' }6 c2 s( Y. }8 _" N/ Y8 {1 v$ g' Q, _
# K7 l1 u. V  o; U0 g5 G
回復

使用道具 舉報

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

本版積分規則



中文酷站排行榜

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

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

GMT+8, 2026-2-4 09:34 , Processed in 0.073424 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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