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

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

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

[複製鏈接]
發表於 2016-10-1 22:08:34 | 顯示全部樓層 |閱讀模式
tid=48521&以CentOS 之 nginx的設定檔是在 /etc/nginx/nginx.conf2 t' o' B# h( `& L( R
一般來說 nginx 配置文件中對優化比較有作用的為以下幾項:" E. L8 m& a0 H, a3 }+ Z4 A; z' I. C
worker_processes 8;
0 f" |+ F, I/ a! ?1 r9 [nginx 進程數,建議按照 cpu 數目來指定,一般為它的倍數。
: }1 V* ^0 n( j9 F2 Xworker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;8 J: P+ v1 {/ m$ i. Z" ?
為每個進程分配 cpu,上例中將 8 個進程分配到 8 個 cpu,當然可以寫多個,或者將一個進程分配到多個 cpu。4 z$ h' J9 t+ h$ }5 f$ j3 V( V
worker_rlimit_nofile 102400;
# C. I/ M& m9 f. y% M這個指令是指當一個 nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與 nginx 進程數4 h  O( _  }* z
相除,但是 nginx 分配請求並不是那麼均勻,所以最好與 ulimit -n 的值保持一致。
7 {0 C# z  g5 Z$ `, s5 ruse epoll;( f1 M: P8 _6 Y  ^/ W
使用 epoll 的 I/O 模型,這個不用說了吧。5 k& P1 b6 \3 D8 E
worker_connections 102400;& j0 B+ E3 A1 c
每個進程允許的最多連接數,理論上每台 nginx 服務器的最大連接數為 worker_processes*worker_connections。5 E4 d! W/ ?1 p  Y( K
keepalive_timeout 60;" P& l9 Q2 r) w6 h" s2 d( }2 G/ t4 T
keepalive 超時時間。
) m6 ~5 [# o/ t# Wclient_header_buffer_size 4k;& y8 m& l( a" I, P: d  I' Q- k
客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過 1k,不過由
0 ~' d, `" C& s* O於一般系統分頁都要大於 1k,所以這裡設置為分頁大小。分頁大小可以用命令 getconf PAGESIZE 取得。" @- E6 P8 X" ~! U! r1 E
open_file_cache max=102400 inactive=20s;+ C8 l2 c& _0 |% s# X2 t
這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時) k4 `; Z/ Q  `* ?
間文件沒被請求後刪除緩存。
$ B* X9 O+ ~' e6 N6 C& Z+ Yopen_file_cache_valid 30s;
  F; N/ ]8 [9 V/ S& w3 t' ^' X這個是指多長時間檢查一次緩存的有效信息。) X4 o; K4 P0 v8 ^- |
open_file_cache_min_uses 1;
% S( \) m5 e  C$ y" Q* E, a& I& V: H1 U# ]open_file_cache 指令中的 inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打
9 ~1 M  l% w# t5 G3 w7 b; v開的,如上例,如果有一個文件在 inactive 時間內一次沒被使用,它將被移除。, x7 q0 p( L: T1 V& l" J1 K" ^

5 x4 I0 H" [( G2 f. v6 {, P( u
# f0 `, _2 Z0 \3 @關於內核參數的優化:$ v# [, ?' ~, O
net.ipv4.tcp_max_tw_buckets = 6000
! c) D2 s/ p0 K: Z: ctimewait 的數量,默認是 180000。
- c  F' v& p; cnet.ipv4.ip_local_port_range = 1024 65000
" y3 V* w5 ]* M4 s4 |2 _允許系統打開的端口範圍。
- V6 k6 Y, R  E7 ]4 h7 ?3 {net.ipv4.tcp_tw_recycle = 1
9 l$ O9 O! p. O啟用 timewait 快速回收。
' u5 s  [( @2 t) l1 D4 S9 i4 rnet.ipv4.tcp_tw_reuse = 1& G# t$ v3 V4 l0 o% |' u
開啟重用。允許將 TIME-WAIT sockets 重新用於新的 TCP 連接。) v5 |% n) r4 K8 ?: \/ J$ n8 O# n
net.ipv4.tcp_syncookies = 1
1 c9 M  S2 Q# N: @( e5 M+ X6 r# f6 v開啟 SYN Cookies,當出現 SYN 等待隊列溢出時,啟用 cookies 來處理。
" r  ?% h) u# b4 Q3 vnet.core.somaxconn = 262144
; ^* l! Y( l9 kweb 應用中 listen 函數的 backlog 默認會給我們內核參數的 net.core.somaxconn 限製到 128,而 nginx 定義的& C* \8 F# w0 a
NGX_LISTEN_BACKLOG 默認為 511,所以有必要調整這個值。
$ t! b4 c8 @4 J7 }7 u( i$ k* P5 Znet.core.netdev_max_backlog = 262144
) P4 I! p- I; ~9 k" o+ s+ t% U每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。
5 H* J6 _/ Y" D2 g( ~) M2 fnet.ipv4.tcp_max_orphans = 262144( F  b5 b5 a& Z9 ]+ y3 L+ p$ U1 s
系統中最多有多少個 TCP 套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤兒連接將即刻被復位並打" _8 R, H$ d) v0 q* ]' Y" U
印出警告信息。這個限制僅僅是為了防止簡單的 DoS 攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值
9 f6 c( o$ Y) b$ L2 ^! k9 J(如果增加了內存之後)。5 ~7 ?6 @9 \' u1 E: c: w& L1 Q
net.ipv4.tcp_max_syn_backlog = 262144) H) P$ J8 m- X7 S9 W3 X9 U
記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對於有 128M 內存的系統而言,缺省值是 1024,小內存的系2 ^3 ?) a8 x- n6 V0 k5 C0 V
統則是 128。8 ~; m( M: G* ~! F' M8 h& k: ~$ {
net.ipv4.tcp_timestamps = 0
4 P% I0 k& o6 D' O+ x$ b+ W時間戳可以避免序列號的捲繞。一個 1Gbps 的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的! Y; P! x; @1 s; {- d9 {* N
數據包。這裡需要將其關掉。. e8 P' [1 c, \# \3 s9 T: ?
net.ipv4.tcp_synack_retries = 1
# Q" @' j" R& A3 p為了打開對端的連接,內核需要發送一個 SYN 並附帶一個回應前面一個 SYN 的 ACK。也就是所謂三次握手中的第二次
- y9 g, h" a9 g7 F) k) k1 d握手。這個設置決定了內核放棄連接之前發送 SYN+ACK 包的數量。
. {9 m, p; I. M7 Unet.ipv4.tcp_syn_retries = 1
* k3 F( |$ P7 c+ y# y3 T在內核放棄建立連接之前發送 SYN 包的數量。
2 m* C* ~  h( u, E$ Ynet.ipv4.tcp_fin_timeout = 1$ R# F" |9 ~/ `( ^8 p' G0 h2 n/ c3 K8 s
如果套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間。對端可以出錯並永遠不關閉連接,甚
, d# m) Z2 y; M至意外當機。缺省值是 60 秒。2.2 內核的通常值是 180 秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕
2 B9 y+ h" A+ q# i6 ?8 a載的 WEB 服務器,也有因為大量的死套接字而內存溢出的風險,FIN- WAIT-2 的危險性比 FIN-WAIT-1 要小,因為它最/ C+ M- U: k! J% C  w2 ?) R6 c: X
多只能吃掉 1.5K 內存,但是它們的生存期長些。1 I7 t$ q5 i7 f* S! J4 @! z
net.ipv4.tcp_keepalive_time = 30
. T* s9 ~; D! x$ K當 keepalive 起用的時候,TCP 發送 keepalive 消息的頻度。缺省是 2 小時。+ W/ t1 A" P& ?5 O, h
6 x) A8 C7 D+ f5 ]4 h" u

' P8 N5 }2 a3 F# \下面貼一個完整的內核優化設置:+ Q8 U. ?3 Y2 o0 q; j* U4 D  ~
net.ipv4.ip_forward = 0( F+ g' j/ H% W( ]
net.ipv4.conf.default.rp_filter = 1
& e6 n4 B7 C6 }6 N5 f3 ynet.ipv4.conf.default.accept_source_route = 0
3 C& e5 d! g2 g+ M$ B5 v- pkernel.sysrq = 0
: l6 L' a" Y2 R7 [9 B4 zkernel.core_uses_pid = 1
1 w& M8 @) v: l+ _7 Xnet.ipv4.tcp_syncookies = 1
  B  B4 q* d! M, N8 Qkernel.msgmnb = 65536' p4 F# D  |( V
kernel.msgmax = 65536; o0 c- z- Y! D
kernel.shmmax = 68719476736' M! N! L/ j2 Y: U) l
kernel.shmall = 4294967296
1 |, a" S  ^7 `& z5 y5 anet.ipv4.tcp_max_tw_buckets = 6000: I2 {. K) f5 i' V
net.ipv4.tcp_sack = 1* l0 m& l7 F7 v
net.ipv4.tcp_window_scaling = 1) [) I* ~% u7 ]( p# z- @; S( G3 B
net.ipv4.tcp_rmem = 4096 87380 4194304
0 N) s( v1 [; fnet.ipv4.tcp_wmem = 4096 16384 4194304
$ L% r5 E) m. }4 M, @net.core.wmem_default = 83886088 ]! E, {+ I* u) }7 u& H9 a
net.core.rmem_default = 8388608
; ?+ K8 C9 K/ `. _9 @( H9 Q( Fnet.core.rmem_max = 167772168 H1 m- A' I- V( G
net.core.wmem_max = 16777216. e: N; m: O& L3 `& y( A6 ?
net.core.netdev_max_backlog = 262144
  N- i* Q' ^- m6 N  \  C$ k. g6 knet.core.somaxconn = 262144& i3 m- ~5 h* x! `: E6 ~
net.ipv4.tcp_max_orphans = 3276800
% U+ \( w# [5 g( `3 k9 X" f5 j" D" unet.ipv4.tcp_max_syn_backlog = 262144
+ G& |: ]* [# w  w1 {net.ipv4.tcp_timestamps = 0
, ]+ ~8 Q, J$ n9 Y6 Rnet.ipv4.tcp_synack_retries = 1/ c( f+ I4 g1 l* M: ^
net.ipv4.tcp_syn_retries = 12 M' k- m! P. x* x# K) V  J4 H3 j
net.ipv4.tcp_tw_recycle = 1, f- J: R$ p) @8 [0 B# T
net.ipv4.tcp_tw_reuse = 17 {  R  w( i; O! c$ C- ~
net.ipv4.tcp_mem = 94500000 915000000 927000000; i, s6 d" N4 ~# p* L) K7 \5 w6 O
net.ipv4.tcp_fin_timeout = 1: t0 M8 }- X/ I6 z3 r* k! w
net.ipv4.tcp_keepalive_time = 30
' r/ ~  r; f+ t! Cnet.ipv4.ip_local_port_range = 1024 65000% e& F% e" p2 o

0 d1 {* c$ ^& @4 @7 b8 s9 p
" C/ X$ e# a# r6 O# y; J& V9 \, s下面是一個簡單的 nginx 配置文件:nginx.conf
$ @- _. j# `4 x: Ouser www www;: N: J7 }9 s2 g( H- _, I
worker_processes 8;
( V( C& N& H' R  ^' R8 Tworker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;' \9 x/ B9 A% {$ r
error_log /www/log/nginx_error.log crit;
. J) ~' }7 }. Lpid /usr/local/nginx/nginx.pid;
( Z. O2 t7 `9 {# b  j/ X8 Eworker_rlimit_nofile 204800;! i% {& T9 j" n' J% E
events/ g. d8 z% Z" i! u& w! Z
{( o! C4 b" x, E2 [
  use epoll;  P4 u, [) T9 `
  worker_connections 204800;
1 J' q" Q. e: a}
  n% ~- {& f. U0 z8 Rhttp2 x% v1 t3 z1 _+ M; ^( n
{
/ n! K: \5 o, V- Qinclude mime.types;# Y; R4 p/ _, I& F4 R7 b
default_type application/octet-stream;& y3 @! p9 W2 k  A: s
charset utf-8;
& n4 q8 {# a" ]4 m server_names_hash_bucket_size 128;" F6 K7 q  g/ {- L: i% b, z; I/ B, u! w
client_header_buffer_size 2k;8 E# C1 ?  l' H' D  X
large_client_header_buffers 4 4k;
. F6 a0 L0 q& r client_max_body_size 8m;
" ~# S1 X" e6 `9 }$ F: Z sendfile on;# o& L- r9 h( `( n: X
tcp_nopush on;% D' Q, E/ h: Q% f
keepalive_timeout 60;- f  z+ O. ~: Y+ T# I1 u
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;- T8 m$ g4 _6 n+ |3 L% y! ~% R/ ~
fastcgi_connect_timeout 300;
' B* N- g! E, v: ?. x5 K fastcgi_send_timeout 300;) e/ h  X# S; s  y
fastcgi_read_timeout 300;: n* \' C2 v# c2 D3 O6 l
fastcgi_buffer_size 16k;5 l& X/ h9 T3 \
fastcgi_buffers 16 16k;
$ B9 r: y+ k; ?$ d: f8 o1 k: e fastcgi_busy_buffers_size 16k;
1 z$ L+ Y+ e0 }' E5 R0 S! r+ B7 l fastcgi_temp_file_write_size 16k;
7 n! }, m. K. w; }. V! o2 R fastcgi_cache TEST;; w! ^8 R: w" ?( j4 e0 x
fastcgi_cache_valid 200 302 1h;
+ ?7 E, C6 X& J! M8 h1 s fastcgi_cache_valid 301 1d;9 g- F) B3 h- W' l. q3 B& E5 U
fastcgi_cache_valid any 1m;
8 a& _0 J  H6 | fastcgi_cache_min_uses 1;4 e0 p( g" d+ B4 n9 w
fastcgi_cache_use_stale error timeout invalid_header http_500;, Y1 m$ p6 u* S2 j6 S
open_file_cache max=204800 inactive=20s;
# S- |7 y* j( u* A open_file_cache_min_uses 1;2 _& g: b# A+ O0 k4 j: H4 Q$ T. g
open_file_cache_valid 30s;
3 i  M, n& k2 L7 v" K- p0 b tcp_nodelay on;
* y2 j* F& m7 k. J, E, O gzip on;
+ r3 w- m" @6 Z/ c gzip_min_length 1k;
/ U2 a4 s8 V, a/ ^( \/ P/ J+ v" U gzip_buffers 4 16k;& g: n( T, T# o; b8 O/ B$ i3 @
gzip_http_version 1.0;! Z3 p( d, m: D4 q: D9 R
gzip_comp_level 2;4 Q: i2 x  ^6 J
gzip_types text/plain application/x-javascript text/css application/xml;9 N) ?- ?; U' T" _' V! O8 }: m
gzip_vary on;
2 i' n! U3 U2 K# L+ \" j1 \ server8 V0 Q4 F& s$ i7 _! ?; E
{
; U2 p! X* B4 g: E. T listen 8080;! O0 ?* @* N+ J+ ?" g
server_name backup.aiju.com;
& B: `6 l  w' J6 l/ W+ y) Q' C index index.php index.htm;* {2 j% A, q+ a- M& M: \
root /www/html/;" E) S' ^' o3 ]2 R& S6 d1 n; E! f
location /status
$ y6 Q$ j: y3 ~" R {
$ _* j5 ?5 x, p$ @3 v% u1 W stub_status on;
2 b/ V/ p6 w* I4 [. \7 | }
" G: S  Q1 l$ m9 j/ M location ~ .*\.(php|php5)?$# c: {) A$ N- L  Q+ W2 s
{2 d3 _& e2 R" f- @& v# m4 l- t
fastcgi_pass 127.0.0.1:9000;% u; m. E. \6 a) G
fastcgi_index index.php;
# a% K3 e% p9 S include fcgi.conf;
. S  J: }, o8 z1 b }4 Q! L; u: ^: u* I- g/ o
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
$ ?; s& a+ \! K3 {; G+ z6 {* P! o {
& E9 F/ \# R. c" ]5 [/ f expires 30d;
6 m1 E' |2 }# W1 i7 C0 X6 H" h }9 H6 v  i; {) f' o8 x5 L$ @
log_format access '$remote_addr - $remote_user [$time_local] "$request" '; H3 |; J- [3 F+ Z" P* N
'$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';" @2 P* \4 A% l' T
access_log /www/log/access.log access;
3 j$ u$ c  n  }$ _7 u }
: V$ }8 N& y9 N6 x" {: F}; q' U4 }- b! x/ \1 o

, w% C% ?$ l) K關於 FastCGI 的幾個指令:+ i# Q% i/ y4 D2 r/ \: B
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
6 O) Q4 A" X* F, g& S5 c2 ?# k) t! q這個指令為 FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。" ^4 j' s$ U' c# m0 Y; N$ v; T
fastcgi_connect_timeout 300;
! Y0 p0 T# Y" @/ S9 G4 i" Y指定連接到後端 FastCGI 的超時時間。
) H7 J1 L$ B: l/ v/ P: p) K4 ifastcgi_send_timeout 300;
" t8 f5 |. U2 z向 FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向 FastCGI 傳送請求的超時時間。
+ Q" Y& C1 ^1 `" _& J/ K) afastcgi_read_timeout 300;8 R; w/ k( V+ W1 u: t# V
接收 FastCGI 應答的超時時間,這個值是指已經完成兩次握手後接收 FastCGI 應答的超時時間。9 H: i, O  P. K
fastcgi_buffer_size 16k;
( s7 x3 O' B1 }5 ?/ r. s5 e指定讀取 FastCGI 應答第一部分需要用多大的緩衝區,這裡可以設置為 fastcgi_buffers 指令指定的緩衝區大小,上面的
: I4 E, r3 b: ^# T, R2 P1 C指令指定它將使用 1 個 16k 的緩衝區去讀取應答的第一部分,即應答頭,其實這個應答頭一般情況下都很小(不會超過0 l" z5 \; Q+ q' I3 q
1k),但是你如果在 fastcgi_buffers 指令中指定了緩衝區的大小,那麼它也會分配一個 fastcgi_buffers 指定的緩衝區大
2 v3 e# u3 Q+ C8 s8 k- L- `9 w8 h小去緩存。. }7 P* O5 c& u$ ^
fastcgi_buffers 16 16k;  t  P. Y* S: d( K# y! C3 @$ G% t. F
指定本地需要用多少和多大的緩衝區來緩衝 FastCGI 的應答,如上所示,如果一個 php 腳本所產生的頁面大小為 256k,3 A2 c2 j' f* o9 T1 X
則會為其分配 16 個 16k 的緩衝區來緩存,如果大於 256k ,增大於 256k 的部分會緩存到 fastcgi_temp 指定的路徑中,
# E8 H, Y! m( ?/ `- ^7 z. a) c當然這對服務器負載來說是不明智的方案,因為內存中處理數據速度要快於硬盤,通常這個值的設置應該選擇一個你的
: O9 z7 P/ c/ \. F( y站點中的 php 腳本所產生的頁面大小的中間值,比如你的站點大部分腳本所產生的頁面大小為 256k 就可以把這個值設
) w6 o' c4 r9 ^( [( `1 X2 m  w置為 16 16k,或者 4 64k 或者 64 4k,但很顯然,後兩種並不是好的設置方法,因為如果產生的頁面只有 32k,如果用 4# S" v0 H# j* o# T& ]7 U6 t! {
64k 它會分配 1 個 64k 的緩衝區去緩存,而如果使用 64 4k 它會分配 8 個 4k 的緩衝區去緩存,而如果使用 16 16k 則它7 b, ^7 P& \4 x9 I
會分配 2 個 16k 去緩存頁面,這樣看起來似乎更加合理。$ c4 u9 O& I2 R0 P$ ]/ F
fastcgi_busy_buffers_size 32k;
5 x3 K- I, ]. Q1 m* x! n這個指令我也不知道是做什麼用,只知道默認值是 fastcgi_buffers 的兩倍。
1 B/ R& `  Y5 T3 q7 Ffastcgi_temp_file_write_size 32k;; o2 i0 P* W+ \# Y$ D
在寫入 fastcgi_temp_path 時將用多大的數據塊,默認值是 fastcgi_buffers 的兩倍。
$ m, x+ D, `  u7 j9 V" g, j- Y6 ~fastcgi_cache TEST" z5 r1 I# P$ w
開啟 FastCGI 緩存並且為其製定一個名稱。個人感覺開啟緩存非常有用,可以有效降低 CPU 負載,並且防止 502 錯誤。
! O  O% x3 m6 R! t! G但是這個緩存會引起很多問題,因為它緩存的是動態頁面。具體使用還需根據自己的需求。
* M1 Y! c2 y6 s: c5 ?( }fastcgi_cache_valid 200 302 1h;
* M2 J. ^" R2 f2 R$ Rfastcgi_cache_valid 301 1d;/ V" g# B# Y( x/ N" N
fastcgi_cache_valid any 1m;! {2 N: {: p2 g. B5 g# v; s
為指定的應答代碼指定緩存時間,如上例中將 200,302 應答緩存一小時,301 應答緩存 1 天,其他為 1 分鐘。
2 x* F7 w& L  F$ F& O( B  yfastcgi_cache_min_uses 1;$ E1 [) k7 |/ }% t" D- ~8 }6 m1 U
緩存在 fastcgi_cache_path 指令 inactive 參數值時間內的最少使用次數,如上例,如果在 5 分鐘內某文件 1 次也沒有被
6 Y  g  g: ]9 d0 D' [( M使用,那麼這個文件將被移除。& J) E& {% r: \( r
fastcgi_cache_use_stale error timeout invalid_header http_500;
# V4 V0 F1 O! P( q不知道這個參數的作用,猜想應該是讓 nginx 知道哪些類型的緩存是沒用的。: Z9 u& a) G. A& a. `+ j1 x& s# |
以上為 nginx 中 FastCGI 相關參數,另外,FastCGI 自身也有一些配置需要進行優化,如果你使用 php-fpm 來管理
7 H4 N# q: t! S8 P- m/ i( [FastCGI,可以修改配置文件中的以下值:+ J) k/ h' i) y+ M
<value name="max_children">60</value>
$ Y, B% }5 x: x+ c# E8 R同時處理的並發請求數,即它將開啟最多 60 個子線程來處理並發連接。
; C/ L5 m0 r+ ^5 _) k6 u/ T<value name="rlimit_files">102400</value>$ e: i1 O9 B5 H5 ~( o% R
最多打開文件數。
& ?+ U; |9 J2 ^! x7 u* i' A<value name="max_requests">204800</value>% J" T2 e# _8 j* Y( s
每個進程在重置之前能夠執行的最多請求數。
. ^% [' F" E  m. t* P8 E: Y  t' l: @* e$ a8 n

$ @  k& C2 X3 h. V3 y參考資料:
3 x, Y3 U3 m. i; y8 Phttp://demo.ckan.org/dataset/daf ... /download/nginx.pdf
, Y& `( X- D; Q* O: lhttp://blog.chinaunix.net/u3/105004/showart_2087155.html0 k& `) A; o1 _$ F2 m
http://nginx.179401.cn/
$ l2 |  I3 v* Q9 [; I! l. p  Ohttp://blog.s135.com/nginx_php_v5/, t4 F7 [* Z% b2 V% J/ Y  o: D8 L
http://xyz.cinc.biz/2015/09/linux-nginx-php-fpm-connection.html
; z& T. q+ l' x& }4 ?( u* W3 ohttps://www.netroby.com/view/3128
6 ]( F) \$ l4 O/ X: L+ Wfastcgi 快取:$ Z, {6 i9 }3 U3 ]- L# ~
https://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/
3 c8 J: e  _3 W" N6 `
其他:
2 N0 N5 I3 y* g7 T9 R* Lnginx設定檔內參數的詳細說明: http://nginx.org/en/docs/http/ng ... l#keepalive_timeout! c8 [3 w' p+ l9 ?& M" I) l
nginx優化:http://www.jianshu.com/p/2184654ba4b2# y* }8 K& V$ [- _7 t" N
gzip壓縮功能以減少網路傳輸檔案大小:http://wenzhixin.net.cn/2013/11/10/server_gzip_on& q* L1 y& C& [
  M7 C, n/ x6 {, J% g& E. S6 r

1 e, s7 ?2 _3 v# d/ f0 s5 X+ x  n- A5 q: H8 @* E6 r

% T+ X1 E1 [$ e
回復

使用道具 舉報

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

本版積分規則



中文酷站排行榜

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

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

GMT+8, 2026-3-23 22:21 , Processed in 0.064847 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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