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

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

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

[複製鏈接]
發表於 2016-10-1 22:08:34 | 顯示全部樓層 |閱讀模式
tid=48521&以CentOS 之 nginx的設定檔是在 /etc/nginx/nginx.conf
6 [+ }" v1 W0 x3 e( b) t8 X一般來說 nginx 配置文件中對優化比較有作用的為以下幾項:
2 w# O  C! ?/ p" X, B! e5 I. L2 gworker_processes 8;
5 {$ N. w. [/ N, jnginx 進程數,建議按照 cpu 數目來指定,一般為它的倍數。
9 B& {$ P0 N) M1 Z' tworker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;/ q5 N. w, W+ b6 Q; ]
為每個進程分配 cpu,上例中將 8 個進程分配到 8 個 cpu,當然可以寫多個,或者將一個進程分配到多個 cpu。7 w+ N9 `7 [7 j* c! u
worker_rlimit_nofile 102400;
7 u# O7 k6 j$ `3 Y7 u, ]4 Y0 T$ \這個指令是指當一個 nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與 nginx 進程數2 b( G! i' v7 H$ K  _& Z7 G
相除,但是 nginx 分配請求並不是那麼均勻,所以最好與 ulimit -n 的值保持一致。( t" @4 q- r0 N
use epoll;& ^$ \' @0 b+ t; X, D- a# Z0 o
使用 epoll 的 I/O 模型,這個不用說了吧。5 f: h5 {! j8 \% y; }
worker_connections 102400;
* j. {7 i2 j! o( x! l每個進程允許的最多連接數,理論上每台 nginx 服務器的最大連接數為 worker_processes*worker_connections。5 X! M- ]7 k1 e1 J0 F. b4 A1 m
keepalive_timeout 60;" x. I3 Q7 G0 R
keepalive 超時時間。
6 A7 r$ x! |8 S# j: O0 h2 Zclient_header_buffer_size 4k;% E% g4 }/ B. b( {0 W% ~7 h
客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過 1k,不過由( o; s; D* f+ o& @& q3 ]7 [
於一般系統分頁都要大於 1k,所以這裡設置為分頁大小。分頁大小可以用命令 getconf PAGESIZE 取得。- y2 {6 \) v9 l9 Z
open_file_cache max=102400 inactive=20s;/ v4 [: Q$ k  U  ~9 l( b+ u
這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時  D/ `) v8 y, Y+ A; b. C
間文件沒被請求後刪除緩存。# v# ~6 ]- f* A  B$ O
open_file_cache_valid 30s;
  P2 j0 O; |1 W這個是指多長時間檢查一次緩存的有效信息。3 R6 H! Q* f% n5 {# C
open_file_cache_min_uses 1;7 A6 x+ x, @* H. H
open_file_cache 指令中的 inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打
  H( q% d& g$ k3 ~開的,如上例,如果有一個文件在 inactive 時間內一次沒被使用,它將被移除。
7 }# ]- R( {6 Q7 F
6 X9 w9 ~# L. d$ X+ P+ a" E: E6 T
關於內核參數的優化:
: U. z4 J: b8 L* P& p2 Enet.ipv4.tcp_max_tw_buckets = 6000/ i' H. i, N$ z, D, A& O
timewait 的數量,默認是 180000。
' I& E7 X1 k# I, @+ [/ rnet.ipv4.ip_local_port_range = 1024 650003 m$ `- [5 H# P5 ~
允許系統打開的端口範圍。
: k- l% j0 Y) Y: n4 \& C8 b) Fnet.ipv4.tcp_tw_recycle = 1
  w* v' v+ T$ O' h5 Q. q啟用 timewait 快速回收。
6 |& u$ ]  P, _4 V& T: E( D9 vnet.ipv4.tcp_tw_reuse = 10 `/ u  U& n8 R3 E5 h5 B. X4 V
開啟重用。允許將 TIME-WAIT sockets 重新用於新的 TCP 連接。
' J) E6 @$ q' bnet.ipv4.tcp_syncookies = 1
: c* q" \& [: P開啟 SYN Cookies,當出現 SYN 等待隊列溢出時,啟用 cookies 來處理。
; t* T8 E: d; r% n% v/ N5 dnet.core.somaxconn = 262144: e4 J& W+ C) r# y; J1 t3 d& F7 g! |
web 應用中 listen 函數的 backlog 默認會給我們內核參數的 net.core.somaxconn 限製到 128,而 nginx 定義的, V2 v) y1 D' D  ~1 S' W
NGX_LISTEN_BACKLOG 默認為 511,所以有必要調整這個值。( B9 c! V9 m9 t- L6 ?( n
net.core.netdev_max_backlog = 262144& w0 i3 F0 ~, c4 e$ }& W
每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。
  f( ~$ R" h$ X4 Unet.ipv4.tcp_max_orphans = 262144
  k( ?6 F/ d" I1 Q+ g3 a! X系統中最多有多少個 TCP 套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤兒連接將即刻被復位並打5 ]. j0 ~9 p3 z$ \4 [
印出警告信息。這個限制僅僅是為了防止簡單的 DoS 攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值" i" P$ q9 y  Q' r/ D5 v
(如果增加了內存之後)。
, V# S9 e* o+ Knet.ipv4.tcp_max_syn_backlog = 2621442 [! E) p: @" Y$ L0 O
記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對於有 128M 內存的系統而言,缺省值是 1024,小內存的系
7 r( S0 Q* ?+ I" U4 g) l統則是 128。0 F# R5 e' J8 j' n/ i  x) B/ n
net.ipv4.tcp_timestamps = 0
4 a5 k" p  B; K! V時間戳可以避免序列號的捲繞。一個 1Gbps 的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的
5 u" O$ K" o+ A" s4 z數據包。這裡需要將其關掉。
" i; q# f3 V( G5 \net.ipv4.tcp_synack_retries = 16 `+ P8 L5 N/ t& Y, F
為了打開對端的連接,內核需要發送一個 SYN 並附帶一個回應前面一個 SYN 的 ACK。也就是所謂三次握手中的第二次
( D1 d2 P( H0 \$ \. |握手。這個設置決定了內核放棄連接之前發送 SYN+ACK 包的數量。
' b) w! M; V$ D  P3 A" b' Ynet.ipv4.tcp_syn_retries = 1, u4 Y* b) k+ @5 x; X# Q, I+ H
在內核放棄建立連接之前發送 SYN 包的數量。* F) e: J2 ^0 Y% r
net.ipv4.tcp_fin_timeout = 1) T" [& B$ a( p9 W9 P2 N" I1 n3 D
如果套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間。對端可以出錯並永遠不關閉連接,甚+ P6 U# H& \3 d1 M
至意外當機。缺省值是 60 秒。2.2 內核的通常值是 180 秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕  F. a! g2 Q% c# s/ {! `0 Z0 Y
載的 WEB 服務器,也有因為大量的死套接字而內存溢出的風險,FIN- WAIT-2 的危險性比 FIN-WAIT-1 要小,因為它最& a! j# _% E. E, u" S* [3 o
多只能吃掉 1.5K 內存,但是它們的生存期長些。" ?9 h' J" y, J- y% b# f) X% J
net.ipv4.tcp_keepalive_time = 30
$ d3 X& U6 |, G9 M( I) Q( v; d當 keepalive 起用的時候,TCP 發送 keepalive 消息的頻度。缺省是 2 小時。, R# E) q" A5 T+ S" w+ `

" M0 [* _6 V% |+ ^# b( J6 y4 W5 t2 U1 g( G: }
下面貼一個完整的內核優化設置:
1 J1 E  U0 n1 z+ M5 J: ynet.ipv4.ip_forward = 0/ M' v' E, b) ?; Q7 {
net.ipv4.conf.default.rp_filter = 12 X# x- K$ A: X! v8 K+ [2 M
net.ipv4.conf.default.accept_source_route = 0
$ \1 N; {2 i: N! h* \9 [2 pkernel.sysrq = 0* U: E- `, d, y8 x3 H" [
kernel.core_uses_pid = 10 Q3 ]. P  d3 Y
net.ipv4.tcp_syncookies = 1
( z( w% N- z$ c6 Y# Z8 Pkernel.msgmnb = 65536
7 y8 W$ E  @5 L' f  f0 I' }! ~kernel.msgmax = 65536
- W$ g* f& r2 Z0 a) B  H; M1 Ikernel.shmmax = 68719476736
. j6 X) m* F* A' l; U* V- Ikernel.shmall = 4294967296, b. L: b2 Q5 a& R+ L1 s( w
net.ipv4.tcp_max_tw_buckets = 6000, z2 S- d$ j; ?1 h) M9 s$ E$ l
net.ipv4.tcp_sack = 1
  C# D' g. H+ rnet.ipv4.tcp_window_scaling = 1. m! }$ ~6 H/ Z7 B3 p; f
net.ipv4.tcp_rmem = 4096 87380 4194304
7 W5 F" k+ R# b' P5 M4 j& ?net.ipv4.tcp_wmem = 4096 16384 41943041 N# a6 B) q- F5 L( E- q
net.core.wmem_default = 8388608  x1 |9 @7 o/ h' o2 b; }& K& {
net.core.rmem_default = 8388608
" c) N$ s: o. N! r. e2 C. Anet.core.rmem_max = 167772166 G2 K" t+ l) P" T4 R! Q* M8 G% V
net.core.wmem_max = 16777216
3 ]2 H4 g' d. L4 @5 cnet.core.netdev_max_backlog = 262144
+ b1 Z% _/ y# anet.core.somaxconn = 262144
& f2 l" p# G; I0 M8 @/ Inet.ipv4.tcp_max_orphans = 3276800
( w/ `6 M  d& j( ^2 k9 cnet.ipv4.tcp_max_syn_backlog = 262144
* u/ [; b" i5 j4 ?1 w4 P) qnet.ipv4.tcp_timestamps = 02 m& M6 `  j2 C$ L+ S7 r* E6 `
net.ipv4.tcp_synack_retries = 1; y7 v8 w8 ~3 i1 d
net.ipv4.tcp_syn_retries = 1
, B! n" I) J) f. C* c, x! fnet.ipv4.tcp_tw_recycle = 1) I6 w' q5 i3 @) I1 W$ s
net.ipv4.tcp_tw_reuse = 1
) u: O/ t# p+ [net.ipv4.tcp_mem = 94500000 915000000 9270000005 w6 O% ^- V) B2 M
net.ipv4.tcp_fin_timeout = 1
% [1 i! f1 ]$ O: n# ?4 Z, _net.ipv4.tcp_keepalive_time = 30
5 G  _6 k7 v& X3 B3 Y8 H% Gnet.ipv4.ip_local_port_range = 1024 65000
% y! G1 C# |" d# Y( X) x! C* p% M: u& Q
: Z5 |, I! h+ T* Q) Q* y/ c
下面是一個簡單的 nginx 配置文件:nginx.conf! b0 _* Q0 R1 ]  q- w: Q
user www www;
$ K; @5 H1 L& e1 u' m9 ]+ A; tworker_processes 8;
; w: D% _/ V$ C9 `worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;
$ m) v% D0 l& L0 }error_log /www/log/nginx_error.log crit;. K  i+ W7 S& j+ N8 \8 j
pid /usr/local/nginx/nginx.pid;3 K( Z6 G6 a3 ~4 @
worker_rlimit_nofile 204800;4 B2 l# p* k5 Y. b+ N2 a3 W
events
$ C2 j; e& B  ?% }  h{; h& m4 a8 o6 f  X( F
  use epoll;
. h( J8 q# J) t7 u) j  worker_connections 204800;* M( C8 k, |: \
}
/ |' B4 P: b2 e; x  J: Fhttp
( f& D3 \% s) _{( u5 F7 b' ?3 q2 x( V5 e
include mime.types;
" p! p' z+ V4 C4 `# F default_type application/octet-stream;
7 ]1 R0 t" [# ?# O, Q charset utf-8;
4 O" M% Y. r2 _2 y4 e: @0 u7 t4 E server_names_hash_bucket_size 128;
! e9 ?; `, m, `/ Y9 t client_header_buffer_size 2k;
  q" N! {7 o* Q- \. p large_client_header_buffers 4 4k;
. W1 X4 B9 v) S+ q client_max_body_size 8m;
- @5 N# r) ^2 T& z sendfile on;, @0 j6 o0 ]( @' ^
tcp_nopush on;8 ?! ?! O8 [9 E
keepalive_timeout 60;, V+ W8 d# w: {% J3 L2 q. T, ~
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
, }) E  T3 r5 u" W, f! R' T% t- t fastcgi_connect_timeout 300;# H) h5 D' K' l' ~; Y/ U
fastcgi_send_timeout 300;1 Q  c- Q, P: S5 K- }. g, ?
fastcgi_read_timeout 300;3 l* }& J; h. S% J
fastcgi_buffer_size 16k;
5 X& ?: g# r3 ^# V' ~; h  j1 p fastcgi_buffers 16 16k;' Z+ y# M5 k  z5 |" W; v" \4 b5 x
fastcgi_busy_buffers_size 16k;* z! ?: `+ a2 Z/ _/ e4 ?
fastcgi_temp_file_write_size 16k;
3 s- f2 x0 b. W( _8 t5 k fastcgi_cache TEST;+ h0 C0 E* f2 W1 ?0 ]4 G" _
fastcgi_cache_valid 200 302 1h;/ B5 X' a$ m/ }0 g( v
fastcgi_cache_valid 301 1d;! _, v% S# J3 Q0 l$ @4 o
fastcgi_cache_valid any 1m;
0 t' x; u6 O- m. X3 y! c fastcgi_cache_min_uses 1;
7 M- x# `# J1 t5 E) { fastcgi_cache_use_stale error timeout invalid_header http_500;
3 I& M4 B$ [* g open_file_cache max=204800 inactive=20s;
+ _% z" ^: k0 {' S' E' [/ e open_file_cache_min_uses 1;
4 Z( z: w; }7 g( B, q open_file_cache_valid 30s;
+ \6 `7 x6 N' |3 h# I# c$ D tcp_nodelay on;4 E  L! c2 {* E$ N
gzip on;
3 {" x6 x4 N# Y- `4 R gzip_min_length 1k;! ~0 a  Y/ H8 N, g1 ~# U, \
gzip_buffers 4 16k;) \2 t; D/ Z, P. h# z: v* b9 y7 m* g
gzip_http_version 1.0;
: n; z! {! T! k gzip_comp_level 2;/ V3 ]6 m# [8 `3 e
gzip_types text/plain application/x-javascript text/css application/xml;* F* Z3 C+ ~" x( Q8 {" V
gzip_vary on;- t" M& R# ]" _- }9 y
server8 H6 N' l: V5 A0 k# r
{* e6 \2 [- ~' l* H
listen 8080;
, J- Z+ ]7 p9 H! z& Q! m1 n7 O5 V server_name backup.aiju.com;# ]+ ], Y! h9 n  S
index index.php index.htm;
: ^- W+ p  `* z root /www/html/;
8 Q1 ~. }& {; ~ location /status
; @+ J' \' y/ Z! t) z. t/ t {
6 H  d6 u3 k& E* F/ ^0 `+ a. W4 X! x stub_status on;: X( p0 f- x! Q4 w) f
}
1 ]! _; I4 e  m4 V location ~ .*\.(php|php5)?$( Y  d% n& C* E9 l7 C7 }- {* K
{
" k( E' h  M( P# g fastcgi_pass 127.0.0.1:9000;
7 ]6 I' ^, N5 { fastcgi_index index.php;
; {$ h1 b$ i2 a$ P9 g; x- D include fcgi.conf;
9 V" X4 C+ h4 K! o$ O% f9 O! I }0 D4 e7 s; L* c% i3 l* t0 `, `$ {
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$; u( @- o$ {% V& }- D
{
& c' W# Y, @4 Q, E- t expires 30d;- Z; I) `( I! K* }
}
7 Y  a1 [1 D/ V4 V! [- D log_format access '$remote_addr - $remote_user [$time_local] "$request" '
/ [/ X; z! a  r) p) E# l  Q, T# t '$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';6 z6 J/ R+ @9 x  t) ~
access_log /www/log/access.log access;- a3 Q* G: W( b0 g
}
: Z3 q9 R5 U- p2 v}& r" W$ t) M; ?; `
# o& ~4 J  ^8 C% |7 l! Q
關於 FastCGI 的幾個指令:9 D$ t) I4 l+ ]% k8 P
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;6 N9 y4 o1 H2 s2 j
這個指令為 FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。
2 p# V4 x( q  ^8 P9 v* Sfastcgi_connect_timeout 300;
7 @# [: t9 A; L# I+ f6 Y指定連接到後端 FastCGI 的超時時間。8 J) m6 ]& T5 d, |- w' F
fastcgi_send_timeout 300;3 D! B2 Y4 F; ]) }' K
向 FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向 FastCGI 傳送請求的超時時間。- ?! M" a  ^: Z6 @
fastcgi_read_timeout 300;6 @8 ^5 ^( P# K
接收 FastCGI 應答的超時時間,這個值是指已經完成兩次握手後接收 FastCGI 應答的超時時間。: a7 C8 R& n; l# }# l; s0 V; V
fastcgi_buffer_size 16k;% k5 u2 z! o. W5 e
指定讀取 FastCGI 應答第一部分需要用多大的緩衝區,這裡可以設置為 fastcgi_buffers 指令指定的緩衝區大小,上面的1 h5 n# ^* Z5 P. h4 s1 @
指令指定它將使用 1 個 16k 的緩衝區去讀取應答的第一部分,即應答頭,其實這個應答頭一般情況下都很小(不會超過5 ?; ?, F; c1 S( J4 t; P- A
1k),但是你如果在 fastcgi_buffers 指令中指定了緩衝區的大小,那麼它也會分配一個 fastcgi_buffers 指定的緩衝區大
( }. j& H6 b% y: u  i小去緩存。
2 s. y( @3 p& lfastcgi_buffers 16 16k;; {2 {7 H3 m3 w6 r; x3 ^, A
指定本地需要用多少和多大的緩衝區來緩衝 FastCGI 的應答,如上所示,如果一個 php 腳本所產生的頁面大小為 256k,
) g) H) Y! ]: E# D4 T" I3 k2 c則會為其分配 16 個 16k 的緩衝區來緩存,如果大於 256k ,增大於 256k 的部分會緩存到 fastcgi_temp 指定的路徑中,
# E, d& e; U3 u  n9 l當然這對服務器負載來說是不明智的方案,因為內存中處理數據速度要快於硬盤,通常這個值的設置應該選擇一個你的
6 Q  L+ X3 j2 y  x4 K# Y) V6 M- i& k站點中的 php 腳本所產生的頁面大小的中間值,比如你的站點大部分腳本所產生的頁面大小為 256k 就可以把這個值設
$ r5 r- i/ O2 K9 e$ u置為 16 16k,或者 4 64k 或者 64 4k,但很顯然,後兩種並不是好的設置方法,因為如果產生的頁面只有 32k,如果用 4
' V8 c% V  r; E2 U0 H6 H2 P64k 它會分配 1 個 64k 的緩衝區去緩存,而如果使用 64 4k 它會分配 8 個 4k 的緩衝區去緩存,而如果使用 16 16k 則它
+ Y, N+ ~+ Y  s' z# _會分配 2 個 16k 去緩存頁面,這樣看起來似乎更加合理。( X% W6 D0 T8 `3 B" f
fastcgi_busy_buffers_size 32k;
" n9 B; L! p$ U& T4 `8 F- d這個指令我也不知道是做什麼用,只知道默認值是 fastcgi_buffers 的兩倍。( l8 W  `2 _' L" _" c) d
fastcgi_temp_file_write_size 32k;" J/ c+ z. B; M+ X
在寫入 fastcgi_temp_path 時將用多大的數據塊,默認值是 fastcgi_buffers 的兩倍。
; d  D6 `. C. |# Y' j/ R6 O* m( Mfastcgi_cache TEST
0 N; S/ r3 j$ q+ U  {- Y$ T1 V開啟 FastCGI 緩存並且為其製定一個名稱。個人感覺開啟緩存非常有用,可以有效降低 CPU 負載,並且防止 502 錯誤。
* M. R3 L8 y2 K% `4 B5 x但是這個緩存會引起很多問題,因為它緩存的是動態頁面。具體使用還需根據自己的需求。; [3 ]% Z) z% P( D0 a9 s
fastcgi_cache_valid 200 302 1h;
1 j6 j& }& a( {fastcgi_cache_valid 301 1d;) l9 H* U2 W1 {
fastcgi_cache_valid any 1m;
/ F8 K8 v9 D, m為指定的應答代碼指定緩存時間,如上例中將 200,302 應答緩存一小時,301 應答緩存 1 天,其他為 1 分鐘。# s/ a+ b. @! p
fastcgi_cache_min_uses 1;
2 ^% j! p7 `- @6 u( [1 L2 M緩存在 fastcgi_cache_path 指令 inactive 參數值時間內的最少使用次數,如上例,如果在 5 分鐘內某文件 1 次也沒有被
+ \  Z/ r* ~$ t( u! ?使用,那麼這個文件將被移除。
% g, R- R9 d2 S9 G- O5 I/ ?fastcgi_cache_use_stale error timeout invalid_header http_500;# n) x) m5 k8 g
不知道這個參數的作用,猜想應該是讓 nginx 知道哪些類型的緩存是沒用的。
  f  d+ d& c' Q9 b* L" L以上為 nginx 中 FastCGI 相關參數,另外,FastCGI 自身也有一些配置需要進行優化,如果你使用 php-fpm 來管理
3 h5 R4 g# ~# R9 {3 SFastCGI,可以修改配置文件中的以下值:' }8 q8 Z8 k% A/ D7 W
<value name="max_children">60</value>" V, K' A# q' B
同時處理的並發請求數,即它將開啟最多 60 個子線程來處理並發連接。, X" e. W$ ?& c/ ?! m6 ~1 n2 D
<value name="rlimit_files">102400</value>& h3 K2 k, |' h7 r1 F0 |, h
最多打開文件數。
. H  K* C5 @4 {! H; {<value name="max_requests">204800</value>
: I( _7 O1 k% Q+ S- H. `每個進程在重置之前能夠執行的最多請求數。6 k- _/ t2 u& V$ }" r9 b3 b

6 i. l% `# W& b$ r9 `2 S0 x+ b2 D4 B- `5 Z
參考資料:5 _# g4 B) B) G& `
http://demo.ckan.org/dataset/daf ... /download/nginx.pdf; B# p1 N* t$ p: a3 Y; n
http://blog.chinaunix.net/u3/105004/showart_2087155.html& _- W9 d! O' \' J
http://nginx.179401.cn/5 n9 A3 J/ P' _; I0 [  d
http://blog.s135.com/nginx_php_v5/
2 z2 ]! Z3 Z8 I$ A: ^# r8 khttp://xyz.cinc.biz/2015/09/linux-nginx-php-fpm-connection.html& C: f/ Q$ T. s- Q
https://www.netroby.com/view/3128
7 ^) f4 X9 z8 E1 t/ rfastcgi 快取:
2 Y1 V* ?8 U( w! |
https://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/3 L4 T4 ^- q& K0 G0 O; y
其他:  c# X9 e2 ^* e
nginx設定檔內參數的詳細說明: http://nginx.org/en/docs/http/ng ... l#keepalive_timeout7 J, p# m2 ]9 {' Q/ L+ y# C
nginx優化:http://www.jianshu.com/p/2184654ba4b2
# s# M7 T* `$ G& G0 z% b  Z3 ?gzip壓縮功能以減少網路傳輸檔案大小:http://wenzhixin.net.cn/2013/11/10/server_gzip_on
) e/ }  [" {; {( l7 D
! g! s! s, e# I+ U1 ^8 F
# o: N! O- b, _9 B6 k

! ~# j) h- ?4 T' ~6 R+ _, X: s: z6 m" ^
回復

使用道具 舉報

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

本版積分規則



中文酷站排行榜

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

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

GMT+8, 2026-2-4 06:25 , Processed in 0.083258 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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