nginx 简要配置

一、概述

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。详细的介绍可以上官网查,或者博客,有很多地方有详尽的说明,该篇博客重要是说Nginx的快速配置。

二、反向代理配置

在说反向代理之前,先搞明白正向代理是什么。

        2.1 正向代理

正向代理就是我们平常所说的代理,他的工作原理就像一个中介。举个例子:我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我,我并不知道代理从具体那个服务器上读取的内容,对我来说是透明的。普通代理服务器也被设计为在Internet上搜寻多个不确定的服务器,而不是 针对Internet上多个客户机的请求访问某一个固定的服务器,因此普通的Web代理服务器不支持外部对内部网络的访问请求。当一个代理服务器能够代理 外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。

2.2 反向代理

反向代理服务器对外就表现为一个Web服务器,外部网络就可以简单把它当作一个 标准的Web服务器而不需要特定的配置。不同之处在于,这个服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务 器上。因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。

所以两者的区别在于代理的对象不一样:正向代理代理的对象是客户端,反向代理代理的对象是服务端。如图:

                     nginx 简要配置_第1张图片

说完了正/反向代理,我们来看在nginx中的配置,nginx的安装时配置文件默认在nginx程序安装目录的conf目录下,启动主配置文件默认为为nginx.conf

        配置位置:设置:http----->server------>location中设置 proxy_pass。

配置:

    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://127.0.0.1:8080;  
}

三、负载均衡

通常解决服务器负载问题,都会通过多服务器分载来解决。常见的解决方案有:
DNS轮询
F5物理设备
Nginx等轻量级架构
那我们看看Nginx是如何实现负载均衡的,Nginx的upstream目前支持以下几种方式的分配
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
3、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
5、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

详细的说明:http://blog.chinaunix.net/uid-20662363-id-3049712.html

    配置位置:http----->upstream

具体配置:

  upstream test.miaohr.com {  
    server 192.168.232.132:80;  
    server 192.168.232.133:80;  
  }

四、示例:

http {    
    
    upstream  www.test1.com {
          ip_hash;
          server   172.16.125.76:8066 weight=10;
          server   172.16.125.76:8077 down;
          server   172.16.0.18:8066 max_fails=3 fail_timeout=30s;
          server   172.16.0.18:8077 backup;
     }
      
     upstream  www.test2.com {
          server   172.16.0.21:8066;
          server   192.168.76.98:8066;         
     }


     server {
        listen       80;
        server_name  www.test1.com;        
       
        location /{
           proxy_pass        http://www.test1.com;
           proxy_set_header   Host             $host;
           proxy_set_header   X-Real-IP        $remote_addr;
           proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }      
     }  
     
     server {
        listen       80;
        server_name  www.test2.com;        
       
        location /{
           proxy_pass        http://www.test2.com;
           proxy_set_header   Host             $host;
           proxy_set_header   X-Real-IP        $remote_addr;
           proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
     }
}
当有请求到www.test1.com/www.test2.com 时请求会被分发到对应的upstream设置的服务器列表上。test2的每一次请求分发的服务器都是随机的,就是第一种情况列举的。而test1刚是根据来访问ip的hashid来分发到指定的服务器,也就是说该IP的请求都是转到这个指定的服务器上。


你可能感兴趣的:(开发工具)