nginx 静态文件缓存
目的: 緩存nginx服務器的靜態文件。如css,js,htm,html,jpg,gif,png,flv,swf,這些文件都不是經常更新。便于緩存以減輕服務器的壓力。
實現: nginx proxy_cache可以將用戶的請緩存到本地一個目錄,當下一個請求時可以直接調取緩存文件,就不用去后端服務器去取文件了。
配置: 打開配置文件/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段設置。
proxy_temp_path /home/temp_dir;設置臨時目錄
proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;設置緩存目錄為二級目錄,共享內存區大小,非活動時間,最大容量,注意臨時目錄要跟緩存目錄在同一個分區。
2、server段設置?
請求靜態文件設置。
proxy_cache cache_one;設置緩存共享內存區塊,也就是keys_zone名稱。
proxy_cache_valid 200 302 1h;設置http狀態碼為200,302緩存時間為1小時。
expires 30d;設置失期時間,為30天
請求動態文件設置。
proxy_pass?http://appserver?;不進行緩存,直接轉到后端服務器。
測試: 當客戶端發起http請求時在服務器上會產一個緩存文件如
?
/home/cache/0/b9/8bd841b1c44ee5b91457eb561e44eb90
OK
總結
以上是生活随笔為你收集整理的nginx 静态文件缓存的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哈罗顺风车开通城市 乘客与司机都进行实
- 下一篇: nginx配置中proxy_redire