Nginx(没记录完)

正向代理:

正向代理,作为一个媒介将互联网上获取的资源返回给相关联的客户端。代理和客户端在一个局域网,对于服务端是透明的。

反向代理:

反向代理,根据客户端的请求,从后端的服务器上获取资源,然后再将这些资源返回给客户端。代理和服务器在一个局域网,对客户端是透明的。

----------------------------------------------------------------------------------------------------------!

Nginx是反向代理的最佳选择,那么为什么需要反向代理呢?反向代理有如下作用:

   •提高动态语言的I/O处理能力,Python、PHP、Java这样的动态服务的I/O处理能力不高,反向代理可以缓冲请求,交给后端一个完整的HTTP请求,同样,Nginx也可以缓冲响应,也达到了减轻后端的压力。   
  •加密和SSL加速。
•安全。它保护和隐藏了原始资源服务器,还可以用作应用防火墙防御一些网络攻击,比如DDoS。
  •负载均衡。它帮应用服务器分配请求,以达到资源使用率最佳、吞吐率最大、响应时间最小的目的。
  •缓存静态内容。代理缓存通常可以满足相当数量的网站请求,大大降低应用服务器上的负载。
  •支持压缩。通过压缩优化可以提高网站访问速度,还能大大减少带宽的消耗。

----------------------------------------------------------------------------------------------------------!

Nginx配置

Nginx的配置文件是以块(block)的形式组织的。

每个块以一个花括号({})来表示,主要有6种块,如表6.1所示。

表6.1 6种配置文件块及其含义:

我们来看一个适用于Nginx+Gunicorn模式的Nginx配置(nginx_gunicorn.conf),由于篇幅限制,只列出和Python应用服务器相关的部分:

http {    
  upstream frontends {
    server 127.0.0.1:8000;
    server 127.0.0.1:8001;
    server 127.0.0.1:8002;
    # server unix:/tmp/gunicorn.sock; # 使用UNIX Socket文件的方式
  }
   server {       
    listen 80;       
    server_name localhost;       
    location ^~ /static/ {           
      root /home/ubuntu/web_develop/static;           
           
    }       
    # 通过下面的方式把这些类型文件缓存30天,前提是保证这些文件是不经常改变的       
    location ~* .(woff|eot|ttf|svg|mp4|webm|jpg|jpeg|png|gif|ico|css|js)$ {           
      expires 30d;       
    }  
     
    location / {           
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;           
      proxy_set_header Host $host;           
      proxy_set_header X-Real-IP $remote_addr;           
      proxy_set_header X-Scheme $scheme;           
      proxy_redirect off;           
      proxy_pass http://frontends;       
    }   
  }
}

替换默认的Nginx配置:

〉 sudo cp chapter6/section2/nginx_gunicorn.conf /etc/nginx/nginx.conf
〉 sudo /etc/init.d/nginx reload

在重启之前,可以使用configtest用来验证配置文件语法的正确性:

〉 sudo /etc/init.d/nginx configtest

如果发生错误,用“nginx -t”来显示配置文件的错误位置,要reload再使用“nginx -t”

------------------------------------------------------------------------------------------------------------!

负载均衡算法

Nginx的负载均衡模块目前支持如下4种调度算法。

  1.round-robin:Nginx默认的轮询算法,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统将被自动剔除,使用户访问不受影响。可以通过weight指定轮询权值,weight值越大,该服务器被访问的概率越高,这主要用于后端每个服务器性能不均的情况。

  2.least_conn:请求会被发送到活跃连接数最少的服务器上。

  配置例子如下:

  

upstream backend {    
    least_conn;  # 默认的轮询算法不需要指定,如选择其他算法需要指定算法类型        
   server 127.0.0.1:8000;
   server 127.0.0.1:8001;
}

 

posted @ 2018-03-01 17:56  丰study  阅读(102)  评论(0)    收藏  举报