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

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

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

[複製鏈接]
發表於 2016-10-1 22:08:34 | 顯示全部樓層 |閱讀模式
tid=48521&以CentOS 之 nginx的設定檔是在 /etc/nginx/nginx.conf/ S! p1 q6 x1 {% y* \) I2 S
一般來說 nginx 配置文件中對優化比較有作用的為以下幾項:
1 r0 }0 f& R9 j0 b5 W' N2 m. Tworker_processes 8;3 b+ k* M( |3 q& Q
nginx 進程數,建議按照 cpu 數目來指定,一般為它的倍數。0 y+ s, W  T2 G' S. s+ ^5 a
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
* x5 U, t5 O  @7 P為每個進程分配 cpu,上例中將 8 個進程分配到 8 個 cpu,當然可以寫多個,或者將一個進程分配到多個 cpu。
4 }7 V: _: f% Yworker_rlimit_nofile 102400;
2 w; B% o% w' T這個指令是指當一個 nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與 nginx 進程數8 \9 P( g" J; Q, ]3 d! }4 p
相除,但是 nginx 分配請求並不是那麼均勻,所以最好與 ulimit -n 的值保持一致。+ O6 T: m4 G. T
use epoll;; ]- _5 T% U1 h: |$ J8 @4 k
使用 epoll 的 I/O 模型,這個不用說了吧。
" z) L7 P: q; sworker_connections 102400;4 i! S3 @* ^2 y0 d2 l
每個進程允許的最多連接數,理論上每台 nginx 服務器的最大連接數為 worker_processes*worker_connections。% z5 N1 J) }: ]5 z  Q5 @+ n
keepalive_timeout 60;) s1 R/ y4 v8 {  ^
keepalive 超時時間。1 R; @- x# I) ~6 E+ w8 u  J2 P
client_header_buffer_size 4k;
& x1 R, S) D) r3 g客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求的頭部大小不會超過 1k,不過由8 u4 t: R) n' d* o3 h" u
於一般系統分頁都要大於 1k,所以這裡設置為分頁大小。分頁大小可以用命令 getconf PAGESIZE 取得。! x+ Z/ V% k( N! H: g! U2 K- d
open_file_cache max=102400 inactive=20s;
* j: @  r  g% W5 w7 k, {這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時: x4 h, s8 |; ^9 ^) p
間文件沒被請求後刪除緩存。  M. `* F" ?0 ^6 K% ~
open_file_cache_valid 30s;$ H, Q" @$ _: b! y$ @; b
這個是指多長時間檢查一次緩存的有效信息。) V+ E3 N. f" e
open_file_cache_min_uses 1;3 A1 X2 [/ ~) D
open_file_cache 指令中的 inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打' Z# ?$ [- y. L5 I
開的,如上例,如果有一個文件在 inactive 時間內一次沒被使用,它將被移除。9 R% `! x& B7 ]0 E" s! F
. i; ~( l: L/ g2 X* \1 |0 I2 N

0 I$ U8 }' C; i" F/ ^% ^關於內核參數的優化:
3 N# @+ \0 c1 N7 anet.ipv4.tcp_max_tw_buckets = 6000; }* Q& h) N  h* N, h: \
timewait 的數量,默認是 180000。( T$ P' I! V. n
net.ipv4.ip_local_port_range = 1024 65000" E+ V2 K6 ]1 h3 p) ?# p/ Y
允許系統打開的端口範圍。
, h) w& e6 o; Q1 l) xnet.ipv4.tcp_tw_recycle = 1, j* R; f" E6 |$ D6 G$ y7 j
啟用 timewait 快速回收。
  G% H" `% p2 @8 h; a. Wnet.ipv4.tcp_tw_reuse = 1
2 U" [$ A+ X  F: J# u0 h: I開啟重用。允許將 TIME-WAIT sockets 重新用於新的 TCP 連接。
6 {( e$ e1 }0 n: Tnet.ipv4.tcp_syncookies = 1- v/ O) z( r9 Y
開啟 SYN Cookies,當出現 SYN 等待隊列溢出時,啟用 cookies 來處理。8 n0 }7 H9 v  J' b0 O1 M
net.core.somaxconn = 262144
/ N5 {6 \! v/ Gweb 應用中 listen 函數的 backlog 默認會給我們內核參數的 net.core.somaxconn 限製到 128,而 nginx 定義的! N: v  Q$ z5 G$ O1 A8 A$ v, K
NGX_LISTEN_BACKLOG 默認為 511,所以有必要調整這個值。( g  P4 [8 }: l3 |" s  c# j
net.core.netdev_max_backlog = 262144( Z# V$ V. J( \) \) @7 d
每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目。
1 W4 d) k# i+ B% Lnet.ipv4.tcp_max_orphans = 262144) a2 Y; e$ @( Y- V  t0 c6 s4 V
系統中最多有多少個 TCP 套接字不被關聯到任何一個用戶文件句柄上。如果超過這個數字,孤兒連接將即刻被復位並打7 `- Z( ~5 p3 L8 w) S" T
印出警告信息。這個限制僅僅是為了防止簡單的 DoS 攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值; F7 J! x; y1 L8 s: ~- _
(如果增加了內存之後)。5 D5 U* ~2 O! X
net.ipv4.tcp_max_syn_backlog = 262144
* y  d6 C/ q5 J4 c  t* L記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對於有 128M 內存的系統而言,缺省值是 1024,小內存的系8 y) `# X* A. U* [
統則是 128。1 N7 x+ @2 |& b9 w& T; [
net.ipv4.tcp_timestamps = 0
. c/ g4 F: ?  m( T$ d4 G1 T- [1 N' T時間戳可以避免序列號的捲繞。一個 1Gbps 的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的3 g2 Q$ \4 y/ a2 I' K
數據包。這裡需要將其關掉。- L' b8 Y9 e- m" ]. a
net.ipv4.tcp_synack_retries = 1
- c4 f1 A  s2 G+ o5 q為了打開對端的連接,內核需要發送一個 SYN 並附帶一個回應前面一個 SYN 的 ACK。也就是所謂三次握手中的第二次0 H& B' a$ c0 g0 D' p6 C' w1 E; P
握手。這個設置決定了內核放棄連接之前發送 SYN+ACK 包的數量。
. u  f& @+ u4 f1 z" vnet.ipv4.tcp_syn_retries = 1
5 |1 R  u$ }7 L1 d& l在內核放棄建立連接之前發送 SYN 包的數量。
, R5 K1 e* \  j. qnet.ipv4.tcp_fin_timeout = 10 ?9 V. p# @% [1 Q4 d( l/ G
如果套接字由本端要求關閉,這個參數決定了它保持在 FIN-WAIT-2 狀態的時間。對端可以出錯並永遠不關閉連接,甚0 w' @' m8 Q8 i' @; h' k& D3 s
至意外當機。缺省值是 60 秒。2.2 內核的通常值是 180 秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕- b% ^& C7 V) l( p, a5 E) o- Y
載的 WEB 服務器,也有因為大量的死套接字而內存溢出的風險,FIN- WAIT-2 的危險性比 FIN-WAIT-1 要小,因為它最" d  V2 f) V7 T3 G* d, r
多只能吃掉 1.5K 內存,但是它們的生存期長些。
: e. ?3 K) u0 y: a) y/ ]" wnet.ipv4.tcp_keepalive_time = 304 k) b4 e, o! U* {# v: O
當 keepalive 起用的時候,TCP 發送 keepalive 消息的頻度。缺省是 2 小時。
8 x. [# [0 T4 n6 E2 F
( g  R5 r. ?3 F# V) }0 F$ m2 {( q7 v% p: U
下面貼一個完整的內核優化設置:
, b) Q% i+ L* u1 Z  A: Tnet.ipv4.ip_forward = 0
7 V% U# {4 q: k* @net.ipv4.conf.default.rp_filter = 15 c4 H$ q7 d* N6 K# W
net.ipv4.conf.default.accept_source_route = 0
1 H7 c; j3 J9 [$ |1 X0 K4 W6 }kernel.sysrq = 0
; j5 q0 u  u$ W( z) f/ kkernel.core_uses_pid = 1
& u3 j0 H9 r0 U0 u$ bnet.ipv4.tcp_syncookies = 1
+ X4 }, g8 A) c! M4 K2 hkernel.msgmnb = 655363 K. |  b) J) r4 r. I
kernel.msgmax = 65536
( {5 X* E" u( Lkernel.shmmax = 687194767361 G  ]- ?! X" |- n/ Q0 J8 L2 s4 w. o
kernel.shmall = 4294967296, s* U1 p2 s6 \$ F) R* O
net.ipv4.tcp_max_tw_buckets = 6000- G" R8 C0 x3 u; P, [! l
net.ipv4.tcp_sack = 1( |/ [0 C9 e+ l" Y4 v1 r; j( ?
net.ipv4.tcp_window_scaling = 1. m7 o0 U8 S* T6 _0 ]
net.ipv4.tcp_rmem = 4096 87380 41943048 Q! c% @3 K2 \, I% Y; f/ X
net.ipv4.tcp_wmem = 4096 16384 4194304* B4 a/ G; r, B( {- y
net.core.wmem_default = 8388608% Z9 q# k7 d& p
net.core.rmem_default = 8388608
% T+ ~9 P3 k0 O- Lnet.core.rmem_max = 167772162 i- |( d( h' M% E
net.core.wmem_max = 167772163 Z" _- R% |. `- w1 a- y: f
net.core.netdev_max_backlog = 262144
5 a* h0 r- Z% W5 wnet.core.somaxconn = 262144
. F! d- A/ P7 Q0 @" S2 unet.ipv4.tcp_max_orphans = 3276800
1 B  v$ n. S5 N9 D7 A3 Rnet.ipv4.tcp_max_syn_backlog = 2621444 l: k! S+ @7 |; M% u
net.ipv4.tcp_timestamps = 0% ^& J& o& w9 v( u( }; k
net.ipv4.tcp_synack_retries = 1' n  J1 o. Q6 {3 M9 a8 N" g5 B
net.ipv4.tcp_syn_retries = 1
* c8 d7 X: |0 t1 mnet.ipv4.tcp_tw_recycle = 11 N( U9 ~3 Z6 d( {8 N, ^
net.ipv4.tcp_tw_reuse = 1
$ N9 i8 q- O# B- rnet.ipv4.tcp_mem = 94500000 915000000 927000000* P2 E: ?/ Z& z( m% P
net.ipv4.tcp_fin_timeout = 1; {; X6 C7 R- h% \. _( f, L
net.ipv4.tcp_keepalive_time = 301 o3 L2 ]: @( x0 I5 A% l3 [
net.ipv4.ip_local_port_range = 1024 65000( _- J% R; s6 G% E4 L

) s+ z; j5 u! A+ \$ |" p8 x- ?  g' ~$ ^$ u: U
下面是一個簡單的 nginx 配置文件:nginx.conf5 K, Z1 T' c2 L) B' G9 g
user www www;2 a; D9 u  _9 b; Z, @
worker_processes 8;$ O7 @. O' A/ b9 Z' I9 B, A+ S. _) H
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;
' R- W7 L! R- |# Y: U0 h7 yerror_log /www/log/nginx_error.log crit;" g- Y6 h0 A- ~1 L  V, {
pid /usr/local/nginx/nginx.pid;/ |" B% i. r7 k& _4 C! q4 z& h6 A' P
worker_rlimit_nofile 204800;0 l3 L* y7 O5 b6 f2 O4 U
events
' ^6 k+ w* \9 P3 R) b: |{0 {2 {: s" D- M9 H3 c8 }0 g' \+ c
  use epoll;% S2 _( A+ d7 z  p0 {' F3 a( C
  worker_connections 204800;
% t& a! e1 m: g" P}
! O2 p, ]  f! J  C/ e. y( U( F2 uhttp; G# K$ K! A% V+ m- s: k
{) j( x% y7 F5 o, T6 ~7 F7 w# d
include mime.types;
( i. m9 y+ U! S$ } default_type application/octet-stream;) J: M+ N& _( a( @: O- _
charset utf-8;+ [6 ^/ f5 y/ @3 d
server_names_hash_bucket_size 128;
0 \! p" B5 H0 H, P client_header_buffer_size 2k;! x) S( c3 J" j
large_client_header_buffers 4 4k;
7 l8 P& l; ~+ u' T8 ^ client_max_body_size 8m;
% Q0 n, N2 A9 Z/ t0 W; R sendfile on;
/ k; C. |. v, o9 W/ K+ a tcp_nopush on;8 P3 W( L; x+ `8 g6 Q* W1 m2 t
keepalive_timeout 60;
; F+ [) _/ h% p) { fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;; f, q4 B+ \+ i% N, K
fastcgi_connect_timeout 300;
! ~9 t) A1 f' ]* e7 `" j fastcgi_send_timeout 300;
2 V. |- L! Q5 Z' p: S3 \0 R! p. @ fastcgi_read_timeout 300;
  T3 X9 |  m( h2 y! a+ u7 o8 f fastcgi_buffer_size 16k;
: H+ f: E$ b9 ?  ?: `0 P fastcgi_buffers 16 16k;; Q; V! ^6 B' G9 M% P! x
fastcgi_busy_buffers_size 16k;# J- D) e) ^, ]% U
fastcgi_temp_file_write_size 16k;
% k, n* L% X1 K fastcgi_cache TEST;: u2 n7 S' v: I+ i$ @
fastcgi_cache_valid 200 302 1h;; |. |9 S$ z0 }* y. ~; t4 ^$ u/ j
fastcgi_cache_valid 301 1d;
. E% P% G" N' o& r" R fastcgi_cache_valid any 1m;2 T5 P, X) C% z! H" j( A
fastcgi_cache_min_uses 1;
0 k0 n  ?9 ?4 L7 c& e4 F, Q; x) e4 x fastcgi_cache_use_stale error timeout invalid_header http_500;
" E# @4 m; r  x; N/ W$ S) b* I% j: S- v: k open_file_cache max=204800 inactive=20s;. o, ]/ u! R! _/ [% o; J. F7 T& C
open_file_cache_min_uses 1;
) j% x0 r, R; \( c# l* V open_file_cache_valid 30s;
8 a" q1 ^' D0 k tcp_nodelay on;
5 C7 g7 c5 B( w$ m" o; D+ N& j# n gzip on;
! Z0 g% d5 D9 G% f! {! d* e8 K0 O gzip_min_length 1k;2 z9 \0 Q1 R. i& _+ F7 f! E* F6 W7 x7 U) I
gzip_buffers 4 16k;( [1 v8 y1 J" k8 W; y
gzip_http_version 1.0;% T4 i  [4 K5 b
gzip_comp_level 2;
' z1 Y3 p8 s6 I/ c* J0 a* w% h, v% ~( @ gzip_types text/plain application/x-javascript text/css application/xml;
. {% W: k' Q  C( i5 C0 K* q gzip_vary on;
8 c4 o. _( X' P' O* |7 x server
6 @5 ]! B. Q9 z, w0 L4 [0 A {( X% W* N$ R% F- V
listen 8080;: k5 u$ c$ }  U, J5 _5 a9 t
server_name backup.aiju.com;% q$ d4 B& Q5 Q8 h; i4 X4 ^+ Q
index index.php index.htm;
8 G8 _- h) o3 m, r! i root /www/html/;% N7 o0 N) r3 Z* K- A& N) i' g
location /status3 r9 X* S( U, T$ ?2 d
{! V6 G+ ^0 {( K) e$ G$ \5 ?( ?
stub_status on;" J5 e5 ~# Q. p( |. e- g+ f/ Y
}: Z) Y# P9 U/ |4 j+ S
location ~ .*\.(php|php5)?$! Z* u, j$ F4 `: F. L
{, D& T  c% z8 D/ X) l  H0 y
fastcgi_pass 127.0.0.1:9000;( ?9 t- W) s  ^  c# I! J
fastcgi_index index.php;
1 Z/ a" q5 A: C0 j. t1 h include fcgi.conf;. U$ U' r, ]0 q; L; I
}
9 q/ M6 f5 s% C location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$# b1 {9 t; b7 F) }, s
{
2 o" W- ?; Z6 |, G( G expires 30d;
' h$ K1 F1 N- i5 U" Z }* U* B. h. k- u: {% h
log_format access '$remote_addr - $remote_user [$time_local] "$request" '4 E8 ?: _) w( x4 ]8 G$ H# ]
'$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';
% C' p$ ?4 ^+ s% N: X4 U9 D access_log /www/log/access.log access;
8 h) j$ K8 E; D' J }
' @6 Q+ m" h4 ?) X5 a& E9 \}
; e' b# p$ s1 }% p; |6 ]6 l
1 _, u1 ]* P4 Q/ }" S- J5 \關於 FastCGI 的幾個指令:. O  w/ ?% k4 P  [9 f% |  A* F
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;8 A3 n$ q6 y6 C8 `9 X
這個指令為 FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間。
/ @" ~! g2 K2 v5 {fastcgi_connect_timeout 300;  j' R( G. y6 V
指定連接到後端 FastCGI 的超時時間。  ^0 A9 N' D4 f5 Q
fastcgi_send_timeout 300;+ O3 a7 F4 a9 W) r% A# j
向 FastCGI 傳送請求的超時時間,這個值是指已經完成兩次握手後向 FastCGI 傳送請求的超時時間。  \, F- s% \: z' p+ D" a6 U
fastcgi_read_timeout 300;7 w, X# Q8 g2 k/ A9 R6 d# A
接收 FastCGI 應答的超時時間,這個值是指已經完成兩次握手後接收 FastCGI 應答的超時時間。
  \2 o2 v8 y3 F7 \7 kfastcgi_buffer_size 16k;
$ P: q- {; @, s0 m1 k6 D指定讀取 FastCGI 應答第一部分需要用多大的緩衝區,這裡可以設置為 fastcgi_buffers 指令指定的緩衝區大小,上面的; P) u! {& y: G( R% `# N/ Q% }$ ?( |
指令指定它將使用 1 個 16k 的緩衝區去讀取應答的第一部分,即應答頭,其實這個應答頭一般情況下都很小(不會超過. x7 \3 e, k; s7 f9 n; j$ }* @
1k),但是你如果在 fastcgi_buffers 指令中指定了緩衝區的大小,那麼它也會分配一個 fastcgi_buffers 指定的緩衝區大; M/ T2 v! s( _) s& W
小去緩存。
; C9 L1 X- J4 ^/ S: ~( Ifastcgi_buffers 16 16k;# |$ g' X7 @' f3 u( I  y8 E- y
指定本地需要用多少和多大的緩衝區來緩衝 FastCGI 的應答,如上所示,如果一個 php 腳本所產生的頁面大小為 256k,
) X  _/ T5 q+ y1 r# ^$ O/ p則會為其分配 16 個 16k 的緩衝區來緩存,如果大於 256k ,增大於 256k 的部分會緩存到 fastcgi_temp 指定的路徑中,$ ]/ N( ^7 E: @
當然這對服務器負載來說是不明智的方案,因為內存中處理數據速度要快於硬盤,通常這個值的設置應該選擇一個你的9 v, S! x$ X5 a$ U
站點中的 php 腳本所產生的頁面大小的中間值,比如你的站點大部分腳本所產生的頁面大小為 256k 就可以把這個值設
6 `6 D( J6 _. W4 r% |1 o- a置為 16 16k,或者 4 64k 或者 64 4k,但很顯然,後兩種並不是好的設置方法,因為如果產生的頁面只有 32k,如果用 44 {3 v* x3 f$ b. m
64k 它會分配 1 個 64k 的緩衝區去緩存,而如果使用 64 4k 它會分配 8 個 4k 的緩衝區去緩存,而如果使用 16 16k 則它
: r3 U1 a' X! \+ }0 i/ I會分配 2 個 16k 去緩存頁面,這樣看起來似乎更加合理。
: S, \9 A2 [( l0 v* O, {fastcgi_busy_buffers_size 32k;
% i1 s% s; p# Y  V4 @+ S這個指令我也不知道是做什麼用,只知道默認值是 fastcgi_buffers 的兩倍。
0 \3 X& @& J* K2 e3 y8 D) V! z% h4 h$ gfastcgi_temp_file_write_size 32k;
  E1 R2 \3 f; c8 g在寫入 fastcgi_temp_path 時將用多大的數據塊,默認值是 fastcgi_buffers 的兩倍。
8 P& u7 Z4 X8 j- K8 U+ xfastcgi_cache TEST
+ H' g3 X; ]" R+ |/ h+ D+ {開啟 FastCGI 緩存並且為其製定一個名稱。個人感覺開啟緩存非常有用,可以有效降低 CPU 負載,並且防止 502 錯誤。$ q5 Y, g; H9 M! N$ r. y0 F/ Y; s
但是這個緩存會引起很多問題,因為它緩存的是動態頁面。具體使用還需根據自己的需求。. }- V) S6 r4 ^
fastcgi_cache_valid 200 302 1h;$ e( O9 E( @' O3 P, j& t
fastcgi_cache_valid 301 1d;/ l% f+ ]3 o, X4 V# e
fastcgi_cache_valid any 1m;
/ Y0 y2 ]1 M2 T1 j1 j+ e. ?為指定的應答代碼指定緩存時間,如上例中將 200,302 應答緩存一小時,301 應答緩存 1 天,其他為 1 分鐘。$ L# F& C; {; C2 D$ k+ R3 {
fastcgi_cache_min_uses 1;4 x+ h3 E2 A$ k! a$ j
緩存在 fastcgi_cache_path 指令 inactive 參數值時間內的最少使用次數,如上例,如果在 5 分鐘內某文件 1 次也沒有被8 f5 I1 t4 ^% _3 z. w6 _8 S& O
使用,那麼這個文件將被移除。
; v- F" W8 Z4 ^6 Y6 G. b6 q: g) Q0 ffastcgi_cache_use_stale error timeout invalid_header http_500;8 F4 s+ W. o% C: m6 t; z: z
不知道這個參數的作用,猜想應該是讓 nginx 知道哪些類型的緩存是沒用的。( ~" s2 Z9 c- J+ C
以上為 nginx 中 FastCGI 相關參數,另外,FastCGI 自身也有一些配置需要進行優化,如果你使用 php-fpm 來管理: L2 d9 ^4 H7 P% \4 _% {9 A
FastCGI,可以修改配置文件中的以下值:
+ v$ G# N# j" ?! e1 V<value name="max_children">60</value>
1 j9 I) r0 x) q同時處理的並發請求數,即它將開啟最多 60 個子線程來處理並發連接。
1 d3 b# C4 Y. {1 E4 j# j+ A<value name="rlimit_files">102400</value>
5 L. T& ?6 b2 v8 @! F( F8 w最多打開文件數。
8 R: S" c1 u( n& N' s. G$ A<value name="max_requests">204800</value>
3 W: t0 z! D% i3 B& V2 ~# F# ]每個進程在重置之前能夠執行的最多請求數。# G8 ^5 M, f! r  E# |; @9 B8 ?

3 o; }8 f5 w) w/ h: L$ _, e- i' `8 [5 h9 W( t$ b
參考資料:
- h+ Q5 p4 m% Z! O$ m4 @8 z  P/ S1 k; Lhttp://demo.ckan.org/dataset/daf ... /download/nginx.pdf& P2 N8 I  R% t7 d4 d. R0 B: ^
http://blog.chinaunix.net/u3/105004/showart_2087155.html0 ^: ]$ I% C4 ~' h
http://nginx.179401.cn/$ V* r3 ~7 Z3 |3 x/ q. R* K( g
http://blog.s135.com/nginx_php_v5/
% x2 K) o2 A2 {5 u/ ghttp://xyz.cinc.biz/2015/09/linux-nginx-php-fpm-connection.html7 U! Y9 @8 H5 `. g$ T" I% I, @
https://www.netroby.com/view/3128
7 F0 z/ A% p& Q: F- ]! Jfastcgi 快取:! ]6 t7 ^; I, {& J
https://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/# j6 z: O2 B$ b. V
其他:! m, V/ Y3 P. X/ ~6 Z0 g
nginx設定檔內參數的詳細說明: http://nginx.org/en/docs/http/ng ... l#keepalive_timeout
7 v" A7 k2 u% V; m6 O; X& k- Z* X. Z+ Nnginx優化:http://www.jianshu.com/p/2184654ba4b2
/ \# v* H& j7 \* G4 s1 M  Wgzip壓縮功能以減少網路傳輸檔案大小:http://wenzhixin.net.cn/2013/11/10/server_gzip_on
4 u5 n6 Y5 [) U: J6 s3 n1 ~% ~
3 t) `$ [! S  {! H+ i" ]

2 Q! _+ U( p2 G$ H1 E2 m7 U! D4 x9 k3 i

2 R" d5 Q* f5 N* i% a
回復

使用道具 舉報

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

本版積分規則



中文酷站排行榜

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

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

GMT+8, 2024-10-29 04:33 , Processed in 0.096712 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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