Nginx的特性功能-反向代理、负载均衡、缓存、动静分离、平滑升级

反向代理

nginx配置文件

events  {   }  事件驱动

httpd  {   }   关于httpd相关的配置

server {  }  定义虚拟主机

location {   }    URI的访问属性

 

location ~*\.php$ {   做正则表达式,所有以.php结尾的文件

   fastcgi_pass  127.0.0.1:9000   反向代理,去127.0.0.1:9000这个地方请求需要的数据

 

    }

反向代理:

proxy_pass :这个选项直接指定一个反向代理

proxy_set_header :将用户请求转发至后端服务器时,可以设定一个独特的头部!

 

负载均衡

upstream  webserver  {    定义服务器组的名称       负载均衡选项要定义在server模块之外

           ip_hash;  将来自于同一个客户端的请求,始终定向到同一个服务器

          server 192.168.2.129  weight=1  max_fails=2     fail_timeout=2;

          选定一个内部服务器 权重为1   最多错误几次   每次检查持续时间

          server 192.168.2.128  weight=1  max_fails=2  fail_timeout=2;  

           server  127.0.0.1:8080  backup;    }    

           当上面服务器全部挂掉时,出现这个页面!

server {

        listen       80;

        server_name  localhost;

 

location  /  {

             proxy_pass  http://webserver/;   反向代理,这里要改为upstream组名,指的是反向代理这个组中的所有成员!

            }

       }

重新定义一个server,设定,当我们的服务器全部挂掉时,出现这个页面。

定义完server后,在upstream模块中添加上这个服务器!

server  {

 listen  8080;

 server_name localhost;

  root /www/a.org;

  index  index.html;

}

 

nginx支持三种负载均衡算法:

     round-robin  :加权,默认

     ip_hash : 将来自于同一个客户端的请求,始终定向到同一个服务器

     least_conn:最少链接

 

缓存

nginx缓存由两部分组成:

    共享内存:存储键和缓存对象数据

    磁盘空间:存储数据

 

proxy_cache_path   定义缓存空间,不能定义在server{ }模块中,

               levels=1:2:1    缓存目录:子目录级别,最多定义三个级别,每一级别字符最多2个!第一个级别1个字符,第二个级别2个字符。。。。

               keys_zone     存储键的区域,区域大小

               max_size      缓存目录大小

格式:proxy_cache_path   /ngnx/hun    levels=1:2:1    keys_zone=fst:20m    max_size=1G; 

                       缓存目录       缓存

cache_manager :根据最近最少使用算法,将那些此前没有用的缓存给他清除出去。

 

定义完缓存,还需要在location模块中启用它,proxy_cache   缓存名,这里的缓存名就是keys_zone中定义的名字

 

另外的三种缓存:

open_log_cache :日志缓存

open_file_cache

fastcgi_cache

 

动静分离

webDAV :一种基于HTTP1.1协议的通信协议,他扩展了HTTP1.1,使应用程序可直接对web  server 直接读写,并支持文件锁定及解锁,支持文件的版本控制

 

 

#动态页面交给http://tdt_wugk,也即我们之前在nginx.conf定义的upstream tdt_wugk 均衡

    location ~ .*\.(php|jsp|cgi)?$

    {

         proxy_set_header Host  $host;

         proxy_set_header X-Real-IP $remote_addr;

         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

         proxy_pass http://tdt_wugk;

    }

#配置Nginx动静分离,定义的静态页面直接从Nginx发布目录读取。

    location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$

    {

    root /data/www/wugk;

    #expires定义用户浏览器缓存的时间为3天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力

    expires      3d;

    }

 

平滑升级

Nginx方便地帮助我们实现了平滑升级。其原理简单概括,就是:

(1)在不停掉老进程的情况下,启动新进程。

(2)老进程负责处理仍然没有处理完的请求,但不再接受处理请求。

(3)新进程接受新请求。

(4)老进程处理完所有请求,关闭所有连接后,停止。

操作步骤:

1、使用nginx  -V  查看旧版本./configure的选项

2、使用旧版本的./configure的选项编译新版本,编译时不能make install

3、编译完成之后,把旧版本的可执行文件备份或者改名,

4、新版本编译完成之后,在解压包目录中objects文件夹下有新版本的可执行文件,把它复制到旧版本可执行文件的文件路径下。

5、测试新版本nginx是否正常,使用新版本的可执行文件  nginx   -t  -c   nginx的主配置文件

6、在新版本nginx的解压目录下执行命令升级:make  upgrade

7、升级之后使用:nginx  -v查看版本信息。

 

猜你喜欢

转载自www.cnblogs.com/linux-s/p/11288905.html