缓存nginx服务器的静态文件
------26--張立--
目的: 緩存nginx服務(wù)器的靜態(tài)文件。如css,js,htm,html,jpg,gif,png,flv,swf,這些文件都不是經(jīng)常更新。便于緩存以減輕服務(wù)器的壓力。
實現(xiàn): nginx proxy_cache可以將用戶的請緩存到本地一個目錄,當(dāng)下一個請求時可以直接調(diào)取緩存文件,就不用去后端服務(wù)器去取文件了。
配置: 打開配置文件/etc/nginx/nginx.conf
user? www www;
worker_processes 2;
error_log? /var/log/nginx/nginx_error.log? crit;
worker_rlimit_nofile 65535;
events
{
? use epoll;
? worker_connections 65535;
}
http
{
? include?????? mime.types;
? default_type? application/octet-stream;
? server_names_hash_bucket_size 128;
? client_header_buffer_size 32k;
? large_client_header_buffers 4 32k;
? client_max_body_size 8m;
? sendfile on;
? tcp_nopush???? on;
? keepalive_timeout 0;
? tcp_nodelay on;
? fastcgi_connect_timeout 300;
? fastcgi_send_timeout 300;
? fastcgi_read_timeout 300;
? fastcgi_buffer_size 64k;
? fastcgi_buffers 4 64k;
? fastcgi_busy_buffers_size 128k;
? fastcgi_temp_file_write_size 128k;
? ##cache##
? proxy_connect_timeout 5;
? proxy_read_timeout 60;
? proxy_send_timeout 5;
? proxy_buffer_size 16k;
? proxy_buffers 4 64k;
? proxy_busy_buffers_size 128k;
? proxy_temp_file_write_size 128k;
? proxy_temp_path /home/temp_dir;
? proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
? ##end##
? gzip??? on;
? gzip_min_length?? 1k;
? gzip_buffers?? 4 8k;
? gzip_http_version? 1.1;
? gzip_types?? text/plain application/x-javascript text/css? application/xml;
? gzip_disable "MSIE [1-6]\.";
? log_format? access? '$remote_addr - $remote_user [$time_local] "$request" '
???????????? '$status $body_bytes_sent "$http_referer" '
???????????? '"$http_user_agent" $http_x_forwarded_for';
? upstream appserver {
??????? server 192.168.1.251;
? }
? server {
??????? listen?????? 80 default;
??????? server_name blog.slogra.com;
??????? location ~ .*\.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) {
????????????? proxy_pass http://appserver ;
????????????? proxy_redirect off;
????????????? proxy_set_header Host $host;
????????????? proxy_cache cache_one;
????????????? proxy_cache_valid 200 302 1h;
????????????? proxy_cache_valid 301 1d;
????????????? proxy_cache_valid any 1m;
????????????? expires 30d;
??????? }
??????? location ~ .*\.(php)(.*){
???????????? proxy_pass http://appserver ;
???????????? proxy_set_header??????? Host $host;
???????????? proxy_set_header??????? X-Real-IP $remote_addr;
???????????? proxy_set_header??????? X-Forwarded-For $proxy_add_x_forwarded_for;
??????? }
??????? access_log /var/log/nginx/blog.slogra.com.log;
? }
}
說明:
1、http段設(shè)置。
proxy_temp_path /home/temp_dir;設(shè)置臨時目錄
proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;設(shè)置緩存目錄為二級目錄,共享內(nèi)存區(qū)大小,非活動時間,最大容量,注意臨時目錄要跟緩存目錄在同一個分區(qū)。
2、server段設(shè)置
請求靜態(tài)文件設(shè)置。
proxy_cache cache_one;設(shè)置緩存共享內(nèi)存區(qū)塊,也就是keys_zone名稱。
proxy_cache_valid 200 302 1h;設(shè)置http狀態(tài)碼為200,302緩存時間為1小時。
expires 30d;設(shè)置失期時間,為30天
請求動態(tài)文件設(shè)置。
proxy_pass http://appserver ;不進行緩存,直接轉(zhuǎn)到后端服務(wù)器。
測試: 當(dāng)客戶端發(fā)起http請求時在服務(wù)器上會產(chǎn)一個緩存文件如
?
/home/cache/0/b9/8bd841b1c44ee5b91457eb561e44eb90
?
轉(zhuǎn)載于:https://blog.51cto.com/im007/1083349
總結(jié)
以上是生活随笔為你收集整理的缓存nginx服务器的静态文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个老外如何丑化中国程序员
- 下一篇: cctype,string,vector