使用nginx服務(wù)器的朋友可能都知道需要設(shè)置html靜態(tài)頁面緩存與頁面壓縮與過期時(shí)間的設(shè)置了,下面我來給各位同學(xué)介紹一下配置方法,包括對ico,gif,bmp,jpg,jpeg,swf,js,css,mp3文件進(jìn)行本地緩存.
可以通過nginx對服務(wù)器上的靜態(tài)資源進(jìn)行過期時(shí)間設(shè)置和對資源進(jìn)行壓縮傳輸來減少服務(wù)器的帶寬開銷。
以下是nginx對靜態(tài)資源過期時(shí)間的設(shè)置方法:
1
2
3
4
|
location ~* .(ico|gif|bmp|jpg|jpeg|png|swf|js|css|mp3) { root /var/www/opkeep; expires 30d; } |
上面的配置可以對ico,gif,bmp,jpg,jpeg,swf,js,css,mp3文件進(jìn)行本地緩存,不用每次訪問都重新從服務(wù)器獲取。
壓縮的配置如下:
1
2
3
4
|
gzip on; gzip_min_length 1000; gzip_buffers 4 8k; gzip_types text/plain application/x-javascript text/css; |
對文本、js和css文件進(jìn)行壓縮,一般情況下,壓縮后的大小是原始大小的25%,甚至更小。
緩存動態(tài)頁面,緩存過期時(shí)間
這里用虛擬機(jī)配置了下:
nginx 配置文件內(nèi)容:
主要是這一句:
1
|
proxy_cache_path /www/ levels=1:2 keys_zone=Z:10m inactive=1m max_size=30g; |
這一句定義一個(gè)區(qū)域,名字是 Z ,在內(nèi)存中的空間為10MB ,硬盤中的最大空間為 30G;
inactive=1m 是,1分鐘之后緩存失效 ,從新從源服務(wù)器請求
這里糾正一下,inactive=1m 如果緩存1分鐘沒人訪問,nginx 會刪除掉這些緩存
/usr/local/nginx/conf/nginx.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; proxy_cache_path /www/ levels=1:2 keys_zone=Z:10m inactive=1m max_size=30g; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root /www/; #expires max; #proxy_store on; #proxy_store_access user:rw group:rw all:rw; #proxy_temp_path /www/; proxy_cache Z; proxy_cache_valid 200 1m; #expires max; include proxy.conf; if ( !-e $request_filename) { proxy_pass http://192.168.1.199:45815; } } #這里設(shè)置當(dāng) 訪問 /ajax/目錄下的內(nèi)容時(shí)候,直接從源服務(wù)器讀取,主要用于ajax 的訪問請求,要求實(shí)時(shí)的 location /ajax/ { include proxy.conf; if ( !-e $request_filename) { proxy_pass http://192.168.1.199:45815; } } #location ~.*.(jpg|png|jpeg|gif) #{ # expires max; #} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ .php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ .php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443; # server_name localhost; # ssl on; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_timeout 5m; # ssl_protocols SSLv2 SSLv3 TLSv1; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} } |
/usr/local/nginx/conf/proxy.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Accept-Encoding 'gzip'; client_max_body_size 100m; client_body_buffer_size 256k; proxy_connect_timeout 60; proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffer_size 512k; proxy_buffers 8 512k; proxy_busy_buffers_size 512k; proxy_temp_file_write_size 512k; |
html 文件可以被緩存,后來就到很多地方去問