Proxy Cache 를 이용 하여 Nginx 가 정적 자원 을 캐 시 합 니 다.

3320 단어 구조 모드
머리말
Nginx 는 프 록 시 캐 시 를 통 해 정적 자원 을 캐 시 할 수 있 는 고성능 HTTP 서버 입 니 다.그 원 리 는 정적 자원 을 일정한 규칙 에 따라 로 컬 하 드 디스크 에 존재 하고 메모리 에 자주 사용 하 는 자원 을 캐 시 하여 정적 자원 의 응답 을 가속 화 하 는 것 이다.
프 록 시 캐 시 설정
다음은 nginx 설정 세 션 입 니 다.
proxy_temp_path   /usr/local/nginx/proxy_temp_dir 1 2;

#keys_zone=cache1:100m     zone   cache1,        100MB
#/usr/local/nginx/proxy_cache_dir/cache1   cache1  zone         
#levels=1:2              1   ,      2   , /usr/local/nginx/proxy_cache_dir/cache1/a/1b    
#inactive=1d     zone         1        ,      cache manager     
#max_size=10g     zone      10GB

proxy_cache_path  /usr/local/nginx/proxy_cache_dir/cache1  levels=1:2 keys_zone=cache1:100m inactive=1d max_size=10g;

server {
    listen 80;
    server_name *.example.com;

    #        $upstream_cache_status
    log_format format1 '$remote_addr - $remote_user [$time_local]  '
        '"$request" $status $body_bytes_sent '
        '"$http_referer" "$http_user_agent" $upstream_cache_status';

    access_log log/access.log fomat1;

    #$upstream_cache_status         , HIT MISS EXPIRED    
    add_header X-Cache $upstream_cache_status;
    location ~ .(jpg|png|gif|css|js)$ {
        proxy_pass http://127.0.0.1:81;

        #       zone
        proxy_cache cache1;

        #     key
        proxy_cache_key $host$uri$is_args$args;

        #      200 304         ,       10  
        proxy_cache_valid 200 304 10m;

        expires 30d;
    }
}

Purge 모듈 설치
Purge 모듈 은 캐 시 를 지 우 는 데 사 용 됩 니 다.
$ wget http://labs.frickle.com/files/ngx_cache_purge-1.2.tar.gz
$ tar -zxvf ngx_cache_purge-1.2.tar.gz

컴 파일 매개 변수 보기
$ /usr/local/nginx/sbin/nginx -V 

기 존의 컴 파일 매개 변수 뒤에 추가 --add-module=/usr/local/ngx_cache_purge-1.2
$ ./configure --user=www --group=www --prefix=/usr/local/nginx \
--with-http_stub_status_module --with-http_ssl_module \
--with-http_realip_module --add-module=/usr/local/ngx_cache_purge-1.2
$ make && make install

nginx 를 종료 하고 다시 시작 합 니 다.
$ /usr/local/nginx/sbin/nginx -s quit
$ /usr/local/nginx/sbin/nginx

Purge 설정
다음은 nginx 의 Purge 설정 세 션 입 니 다.
location ~ /purge(/.*) {
    #   IP
    allow 127.0.0.1;
    deny all;
    proxy_cache_purge cache1 $host$1$is_args$args;
}

캐 시 지우 기
사용 방법:
$ wget http://example.com/purge/uri

이 중 uri 은 정적 자원 의 URI 이 며, 캐 시 된 자원 의 URL 은  http://example.com/js/jquery.js, 그럼 방문  http://example.com/purge/js/jquery.js 캐 시 를 지 웁 니 다.
적중률
다음 코드 를 hit 로 저장 합 니 다.rate.sh:
#!/bin/bash
# author: Jeremy Wei 
# proxy_cache hit rate

if [ $1x != x ] then
    if [ -e $1 ] then
        HIT=`cat $1 | grep HIT | wc -l`
        ALL=`cat $1 | wc -l`
        Hit_rate=`echo "scale=2;($HIT/$ALL)*100" | bc`
        echo "Hit rate=$Hit_rate%"
    else
        echo "$1 not exsist!"
    fi
else
    echo "usage: ./hit_rate.sh file_path"
fi

사용 방식
$ ./hit_rate.sh /usr/local/nginx/log/access.log

참고:
http://wiki.nginx.org/HttpProxyModule

좋은 웹페이지 즐겨찾기