zoukankan      html  css  js  c++  java
  • nginx作用

    nginx有两个作用:1.负载均衡 2.静态图片服务器

    一.负载均衡

    Nginx 的 HttpUpstreamModule 提供对后端(backend)服务器的简单负载均衡。一个最简单的 upstream 写法如下:

     1 upstream backend {
     2     server backend1.example.com;
     3     server backend2.example.com;
     4     server.backend3.example.com;
     5 }
     6 
     7 server {
     8     location / {
     9         proxy_pass http://backend;
    10     }
    11 }

    1、后端服务器

    通过 upstream 可以设定后端服务器,指定的方式可以是 IP 地址与端口、域名、UNIX 套接字(socket)。其中如果域名可以被解析为多个地址,则这些地址都作为 backend。下面举例说明:

    1 upstream backend {
    2     server blog.csdn.net/poechant;
    3     server 145.223.156.89:8090;
    4     server unix:/tmp/backend3;
    5 }

    2、负载均衡策略

    Nginx 提供轮询(round robin)、用户 IP 哈希(client IP)和指定权重 3 种方式。

    默认情况下,Nginx 会为你提供轮询作为负载均衡策略。但是这并不一定能够让你满意。

    一个问题,用户登陆后两台服务器的session不能共享,我研究了一下,发现有四个解决方案,1、session放入cookie中,2、session放入数据库中,3、session使用memcache技术放入内存中。这几个一看就不是合适,不安全,I/O慢,内存溢出。所以我觉得第四种方式比较合适,就是在nginx.conf中配置一个ip_hash,原理是ip_hash技术能够将某个ip的请求定向到同一台后端,这样一来这个ip下的某个客户端和某个后端就能建立起稳固的session。

    再介绍一个和 ip_hash 配合使用的关键字:down。当某个一个 server 暂时性的宕机(down)时,你可以使用“down”来标示出来,并且这样被标示的 server 就不会接受请求去处理。具体如下:

    1 upstream backend {
    2     server blog.csdn.net/poechant down;
    3     server 145.223.156.89:8090;
    4     server unix:/tmp/backend3;
    5 }

    还可以使用指定权重(weight)的方式,如下:

    1 upstream backend {
    2     server backend1.example.com;
    3     server 123.321.123.321:456 weight=4;
    4 }

    默认情况下 weight 为 1,对于上面的例子,第一个 server 的权重取默认值 1,第二个是 4,所以相当于第一个 server 接收 20% 的请求,第二接收 80% 的。要注意的是 weight 与 ip_hash 是不能同时使用的,原因很简单,他们是不同且彼此冲突的策略。

    3、重试策略

    可以为每个 backend 指定最大的重试次数,和重试时间间隔。所使用的关键字是 max_fails 和 fail_timeout。如下所示:

    1 upstream backend {
    2     server backend1.example.com weight=5;
    3     server 54.244.56.3:8081 max_fails=3 fail_timeout=30s;
    4 }

    在上例中,最大失败次数为 3,也就是最多进行 3 次尝试,且超时时间为 30秒。max_fails 的默认值为 1,fail_timeout 的默认值是 10s。传输失败的情形,由 proxy_next_upstream 或 fastcgi_next_upstream 指定。而且可以使用 proxy_connect_timeout 和 proxy_read_timeout 控制 upstream 响应时间。

    有一种情况需要注意,就是 upstream 中只有一个 server 时,max_fails 和 fail_timeout 参数可能不会起作用。导致的问题就是 nginx 只会尝试一次 upstream 请求,如果失败这个请求就被抛弃了 : ( ……解决的方法,比较取巧,就是在 upstream 中将你这个可怜的唯一 server 多写几次,如下:

    1 upstream backend {
    2     server backend.example.com max_fails fail_timeout=30s;
    3     server backend.example.com max_fails fail_timeout=30s;
    4     server backend.example.com max_fails fail_timeout=30s;
    5 }

    4、备机策略

    从 Nginx 的 0.6.7 版本开始,可以使用“backup”关键字。当所有的非备机(non-backup)都宕机(down)或者繁忙(busy)的时候,就只使用由 backup 标注的备机。必须要注意的是,backup 不能和 ip_hash 关键字一起使用。举例如下:

    1 upstream backend {
    2     server backend1.example.com;
    3     server backend2.example.com backup;
    4     server backend3.example.com;
    5 }

    二.静态图片服务器

    1.效果

    例如:图片通过ftp服务上传到/home/ftpuser/www/images目录下,我想通过访问Nginx服务器来访问ftp目录下的图片文件,该url为http://ip地址//images/xxx.jpg,即使用http请求访问原本需要使用ftp请求才能访问到的资源文件。

    2.实现

     ①需要在nginx/html下创建一个images文件夹(实际访问的不是这个路径)

    1 mkdir /usr/local/nginx/html/images

    ②修改nginx/conf/nginx.conf在默认的server里再添加一个location并指定实际路径:

    1 location /images/ {
    2     root  /home/ftpuser/www/;
    3     autoindex on;
    4 }  

    修改完后重新启动nginx

    1 ./nginx -s reload

    1)root则是将images映射到/home/ftpuser/www/images/ 

    2)autoindex on便是打开浏览功能。

    3)ftpuser这个用户需要自己创建,名字任意

    4)root /home/ftpuser/www/这后面是不带images的且root后面要有空格

    ③修改用户访问权限

    1 chown ftpuser /home/ftpuser
    2 chmod 777 -R /home/ftpuser
  • 相关阅读:
    初学python 遇到的坑
    golang 裸写一个pool池控制协程的大小
    自制C#版3DS文件的解析器并用SharpGL显示3DS模型
    [译+改]最长回文子串(Longest Palindromic Substring) Part II
    [译]最长回文子串(Longest Palindromic Substring) Part I
    [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之纹理Textures
    [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之网格Meshes
    [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之网格渲染器和过滤器Mesh renderers and filters
    [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之材质了解Materials
    [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之灯光介绍Lights
  • 原文地址:https://www.cnblogs.com/chinano1/p/9475733.html
Copyright © 2011-2022 走看看