初识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反向代理和缓存机制(简单实现)的主要内容,如果未能解决你的问题,请参考以下文章

Nginx初识

Varnish缓存机制详细介绍及简单配置

4-1-面试必备-nginx实现反向代理配置与实战

centos7.4 搭建nginx反向缓存代理

Nginx之反向代理日志格式集群缓存压缩URl 重写,读写分离配置

编译安装nginx并实现反向代理负载均衡和缓存功能