4324234 发表于 2017-1-9 16:39:46

nginx缓存服务器

一.准备
1.一台后端服务器,已安装Apache服务器,/var/www/html下已放置了一张图片head.jpg,IP为192.168.1.105
2.一台服务器,用来安装nginx,当做缓存服务器,IP为192.168.1.109

二、 Nginx(Ngx_cache)安装:
首先下载Nginx缓存模块,ngx_cache_purge相应版本,这里下载nginx-1.4版本,不同版本对应不同的Nginx版本,安装的时候要留心。

1
2
3
4
5
6
7
8
9
10
ulimit -SHn 65535
yum install pcre pcre-devel -y
wget http://nginx.org/download/nginx-1.0.11.tar.gz
http://labs.frickle.com/files/ngx_cache_purge-1.4.tar.gz
tarz xvf ngx_cache_purge-1.4.tar.gz
tarz xvf nginx-1.0.11.tar.gz
useradd www
cd nginx-1.0.11/
./configure--user=www--group=www--add-module=../ngx_cache_purge-1.4--prefix=/usr/local/nginx--with-http_stub_status_module--with-http_ssl_module
make && make install




配置文件内容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
userwww www;
worker_processes 8;
error_log/usr/local/nginx/logs/nginx_error.logcrit;
pid       /usr/local/nginx/nginx.pid;
worker_rlimit_nofile 65535;
events
{
use epoll;
worker_connections 65535;
}
http
{
include       mime.types;
default_typeapplication/octet-stream;
charsetutf-8;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
sendfile on;
tcp_nopush   on;
keepalive_timeout 60;
tcp_nodelay on;
client_body_buffer_size512k;
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;
gzip on;
gzip_min_length1k;
gzip_buffers   4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types       text/plain application/x-javascript text/css application/xml;
gzip_vary on;
#这里设置缓存目录,为/data/proxy_temp,/data/proxy_cache
proxy_temp_path   /data/proxy_temp;
proxy_cache_path/data/proxy_cachelevels=1:2   keys_zone=cache_one:200m inactive=1d max_size=1g;
upstream backend_server {
server 192.168.1.105:80;
}
server
{
    listen       80;
    server_name127.0.0.1;
    location /
    {
         proxy_set_header Host$host;
         proxy_set_header X-Forwarded-For$remote_addr;
         proxy_pass http://backend_server;
    }
    location ~ .*\.(gif|jpg|jpeg|bmp|png|js|css|swf)?$   //缓存文件类型
    {
         proxy_cache cache_one;
         proxy_cache_valid 200 304 12h;
         proxy_cache_valid 301 302 1m;
         proxy_cache_valid any 1m;
         proxy_cache_key $host$uri$is_args$args;
         proxy_set_header Host$host;
         proxy_set_header X-Forwarded-For$remote_addr;
         proxy_pass http://backend_server;
    }
    location ~ /purge(/.*)
    {
   allow            127.0.0.1;
   deny            all;
   proxy_cache_purge    cache_one   $host$1$is_args$args;
    }
    access_logoff;
}
}




###########################################################################################
说明
Nginx缓存服务器的配置主要通过proxy_cache相关命令来实现。
proxy_cache_path /backup/proxy_cache_dir levels=1:2 keys_zone=cache_one:4096m inactive=1d max_size=3g;
- poxy_cache_path:用于设置缓存的目录,后面跟缓存路径。最好将缓存目录放在一个独立的硬盘上。
- levels=1:2:levels用来设置目录深度,这里是两层目录深度,第一层是一个字符,第二层是两个字符。
- keys_zne:用来设置web缓存区名称,这里的cache_one后面的4096,表示内存缓存空间大小为4GB
- inactive:表示自动清除缓存文件的时间,这里的“d”表示1天没有被访问的内容自动清除,还可以使用分钟和小时计数,5m,5h。
- max_size:表示硬盘缓存空间可使用的最大值,默认情况下经访问的文件常将被放到内存中进行缓存,而在内存缓存空间不足时,Nginx会将不经常访问的数据从内存写到磁盘。
proxy_temp_path /backup/proxy_temp_dir;
- 用于指定临时缓存文件的存储路径,这里需要注意的是,两个存放缓存文件的目录必须在同一磁盘分区。


三、实验验证
前面提到,已经将一个图片文件head.jpg放置在192.168.1.105的后端服务器的/var/www/html下,启动Apache,Nginx配置好之后也需要启动;
1.在此情况下,先访问http://192.168.1.109/head.jpg,能访问到,此时apache和nginx均启动;
2.关闭后台apache,nginx保持开启,访问http://192.168.1.109/head.jpg,可见的情况是head.jpg还能访问到;去/data/proxy_temp和/data/proxy_cache下能发现生成的缓存文件;


页: [1]
查看完整版本: nginx缓存服务器