初识nginx反向代理和缓存机制(简单实现)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识nginx反向代理和缓存机制(简单实现)相关的知识,希望对你有一定的参考价值。
实现的需求图:
环境:
nginx缓存和反向代理服务器:192.168.0.224
实际存储数据机器:192.168.0.37
一、实现反向代理
1、安装nginx,两台服务器都需要安装
1)安装依赖包
yum -y install gcc make cmake ncurses-devel libxml2-devel libtool-ltdl-devel gcc-c++ autoconf automake bison zlib-devel
2)下载nginx
wget http://nginx.org/download/nginx-1.8.0.tar.gz
3)解压编译
tar -zxvf nginx-1.8.0.tar.gz ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx make make install
2、修改配置文件
这里只实现他的功能,并没有对配置文件做更多的修改
代理服务器:vim /usr/local/nginx/conf/nginx.conf
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location /{ root /nginxroot; } location = /50x.html { root html; } } location /web1/ { proxy_pass http://192.168.0.37/; } }
真实数据服务器:改路径即可vim /usr/local/nginx/conf/nginx.conf
location /{ root /web1; index index.html index.php; }
创建对应的文件夹
在192.168.0.224上:
mkdir /nginxroot echo "I am proxy server" >/nginxroot/index.html
在192.168.0.37上:
mkdir /web1 echo "I am realy server" >/web1/index.html
3、启动nginx
/usr/local/nginx/sbin/nginx
4、测试
这是代理服务器自身的nginx
假如我要访问www.lile.com/web1,那么代理服务器会把这个请求转发给真实数据机器,然后把数据读取出来
二、缓存机制
在反向代理的基础上,打开缓存机制,这样可以加快访问速度,只是添加几行配置,能实现缓存这个功能,其他具体的优化,安全之类的还没有仔细研究,先搭起来理解看怎么回事再细细研究其他的
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; proxy_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=30g; server { listen 80; server_name localhost; location /{ root /nginxroot; } location = /50x.html { root html; } } location /web1/ { proxy_cache cache_one; proxy_cache_valid 200 304 302 24h; proxy_pass http://192.168.0.37/; } }
主要添加了三行:
proxy_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=30g;
proxy_cache cache_one;
proxy_cache_valid 200 304 302 24h;
proxy_cache_path:表示缓存文件存放的目录
levels=1:2 : 设置目录层次
keys_zone=cache_one:500m : 设置缓存名字
inactive=1d : 在指定时间内没人访问,就删除缓存
max_size=30g : 最大缓存空间
测试:
当你第一次访问web1目录时,得到的结果是,如下,说明它是从真实的数据服务器处获取的数据
可以进入到缓存目录看一下它的目录结构:
查看一下具体的内容:
然后把真实数据服务器的nginx给停掉,再一次访问,还是可以得到
然后把代理服务器的缓存数据给删除,再一次访问,得到结果:
这就说明了第二次访问的是缓存数据的内容
以上是关于初识nginx反向代理和缓存机制(简单实现)的主要内容,如果未能解决你的问题,请参考以下文章