初识nginx反向代理和缓存机制
实现的需求图:
一、实现反向代理
1、安装nginx,两台服务器都需要安装
1)安装依赖包
yum -y install gcc make cmake ncurses-devel libxml2-devel libtool-ltdl-devel gcc-c++ autoconf automake bison zlib-devel pcre-devel openssl openssl-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、修改配置文件
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 / { proxy_pass http://192.168.0.37/; } }
2)真实数据服务器:改路径即可vim /usr/local/nginx/conf/nginx.conf
location /{ root /data; index index.html index.php; }
3)创建对应的文件夹
mkdir /data echo "I am realy server" >/data/index.html
3、两台机器上启动nginx
/usr/local/nginx/sbin/nginx
4、测试
二、缓存机制
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 / { proxy_cache cache_one; proxy_cache_valid 200 304 302 24h; proxy_pass http://192.168.0.37/; } }
2:查看他的进程多了缓存
目录的名称是基于请求URL通过哈希算法获取到的
查看一下具体的内容:
3)然后把真实数据服务器的nginx给停掉,再一次访问,还是可以得到
4)然后把代理服务器的缓存数据给删除,再一次访问,得到结果:说明从缓存没有找到,然后代理转发到真是的服务器也没找到,这就说明了第二次访问的是缓存数据的内容
第二次再去访问,还是监听这个80端口,可以发现tcpdump没有任何数据,说明它直接从缓存里读取了,你可以把缓存删了,再次在客户端访问,可以看到它又有数据了
基于proxy_store的缓存
1:修改反向代理的配置文件
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 "/web1"; proxy_store on; proxy_store_access user:rw group:rw all:r; proxy_temp_path "/web1"; if ( !-f $request_filename ) { proxy_pass http://192.168.0.37; } } }
创建文件夹:
mkdir /web1
2:真实数据服务器的配置文件
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; } root /data; }
在代理服务器的缓存目录下可以看到缓存到的数据和真实数据服务器的目录结构一样:(这个与proxy cache不一样)
把代理缓存的a.html改一下:
再次访问的时候,返回的数据如下,说明它第二次访问的是缓存
proxy store 与proxy cache的区别:proxy store不提供缓存过期更新,内存索引建立等功能,缓存文件一直会保存在本地磁盘中。
注:学习《nginx高性能Web服务器详解》的时候总结
-------------------------------------------
个性签名:在平凡中坚持前行,总有一天会遇见不一样的自己!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!
微信公众号 微信打赏 支付宝打赏
posted on 2017-11-08 15:38 Captain_Li 阅读(11935) 评论(0) 编辑 收藏 举报