Nginx作緩存服務器

Nginx作緩存服務器css

Nginx配置

1.主配置/etc/nginx/nginx.confhtml

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    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;
    include /etc/nginx/conf.d/*.conf;

    #include proxy.conf;
    #include upstrem.conf;
    #include blog.biglittleant.cn.conf;
    server {
        listen       80;
        server_name  localhost;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

2.proxy配置/etc/nginx/conf.d/proxy.confnginx

proxy_temp_path /data/cdn_cache/proxy_temp_dir;
proxy_cache_path /data/cdn_cache/proxy_cache_dir levels=1:2 keys_zone=cache_one:50m inactive=1d max_size=1g;
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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_404;

參數解釋:後端

proxy_cache_path: 緩存文件路徑
levels: 設置緩存文件目錄層次;levels=1:2 表示兩級目錄
keys_zone: 設置緩存名字和共享內存大小
inactive: 在指定時間內沒人訪問則被刪除
max_size: 最大緩存空間,若是緩存空間滿,默認覆蓋掉緩存時間最長的資源。每個proxy_cache_path對應一個ngx_http_file_cache_t結構體。
proxy_cache tmp-test: 使用名爲tmp-test的緩存配置
proxy_cache_key $uri :定義緩存惟一key,經過惟一key來進行hash存取
proxy_cache_methods :設置緩存哪些HTTP方法
proxy_cache_min_uses :指定請求至少被髮送了多少次以上時才緩存,能夠防止低頻請求被緩存
proxy_cache_bypass :若是指定的任何一個變量值不爲空,或者不等於0,nginx就不會查找緩存,直接進行代理轉發
proxy_cache_lock/proxy_cache_lock_timeout: 當多個客戶端同時請求同一分內容時,若是開啓proxy_cache_lock(默認off)則只有一個請求被髮送至後端;其餘請求將等待該內容返回;當第一個請求返回時,其餘請求將從緩存中獲取內容返回;當第一個請求超過了proxy_cache_lock_timeout超時時間(默認5s),則其餘請求將同時請求到後端來獲取響應,且響應不會被緩存;啓用proxy_cache_lock能夠應對雪崩效應。

3.upstream配置/etc/nginx/conf.d/upstream.conf緩存

upstream blog.test.cn
{
        server 47.75.246.12:80 weight=10 max_fails=3;
}

4.blog.test.cn配置/etc/nginx/conf.d/blog.test.cn.confbash

server
{
    listen 80;
    server_name blog.test.cn;
    access_log logs/blog.biglittleant.cn-access.log main;
    location ~ .*\.(gif|jpg|png|html|htm|css|js|ico|swf|pdf|txt)$
    {
        #Proxy 
        proxy_redirect off;
        proxy_next_upstream http_502 http_504 http_404 error timeout invalid_header;
        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_pass    http://blog.test.cn;
 
        #Use Proxy Cache
        proxy_cache cache_one;
        proxy_cache_key "$host$request_uri";
        add_header Cache "$upstream_cache_status";
        proxy_cache_valid  200 304 301 302 8h;
        proxy_cache_valid 404 1m;
        proxy_cache_valid  any 2d;
    }
    location /
    {
                proxy_redirect off;
                proxy_next_upstream http_502 http_504 http_404 error timeout invalid_header;
                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_pass    http://blog.test.cn;
                client_max_body_size 40m;
                client_body_buffer_size 128k;
                proxy_connect_timeout 60;
                proxy_send_timeout 60;
                proxy_read_timeout 60;
                proxy_buffer_size 64k;
                proxy_buffers 4 32k;
                proxy_busy_buffers_size 64k;
 
    }
}

 新建存儲目錄:服務器

mkdir -p  /data/cdn_cache

注意:啓動nginx會多出兩個cache的進程。app

 第一次請求資源會先從源服務下載在nginx上,再返回給客戶端。第二次請求相同資源時直接從nginx返回給客戶端。3d

相關文章
相關標籤/搜索