2506-nginx的配置-域名分发与负载均衡(只有配置无原理)

nginx的安装

Windows7:官网下载,是一个压缩包,运行解压缩后的exe文件即启动了nginx,需注意的是,Windows(win7)的80端口默认被微软的IIS占用,需改成别的端口,例如8010(如何改?参考下面的配置文件讲解)

解压后的目录:
1.conf目录:存放配置文件的目录,包含主配置文件nginx.conf,是我们经常修改的配置文件。
2.contrib目录:存放开源爱好者共享的代码。
3.docs目录:存放文档资料。
4.html目录:默认存放了Nginx的错误页面和欢迎页面。
5.logs目录:默认存放了访问日志、错误日志和Nginx主进程pid文件。
6.temp目录:临时目录,用于存放Nginx运行时产生的临时文件。
7.nginx.exe:可执行程序,常用于Nginx服务的启动、停止等管理工作。

Linux:
分为两种方式,1是yum源安装,2是源码通过make编译
(网上教程很多,略过)

静态代理

代理的是静态的html文件等

    # server是一个代理的信息体
    server {
        # 监听的端口
        listen  8010;
        # 监听的域名 访问localhost:8010即可访问到主页
        server_name     localhost;
        # html文件路径
        location / {
            # html是文件夹名
            root   html;
            index  index.html index.htm;
        }
    }
    
    
    # 例子 代理一个域名(域名分发)
    server {
        listen  80;
        server_name     aaa.abc.com;
        location / {
            root   html/aaa;
            index  index.html index.htm;
        }
    }
    
    
    

反向代理

通过proxy_pass将请求发给子服务处理

    # 将对abc.com的请求 都代理到localhost:9999去处理,localhost可换为其他服务器的ip,9999也可换为其他端口
    server {
        listen  80;
        server_name abc.com;
        location / {
            proxy_pass http://localhost:9999;
            proxy_set_header  X-Real-IP  $remote_addr;     
            client_max_body_size  100m;  
        }
    }

负载均衡

nginx的负载均衡主要是通过模块upstream来实现的,

upstream abc.com{
        server localhost:9999 weight=10;
        server localhost:9998 weight=10;
        server localhost:9997 weight=10;
    }

    server {
        listen  80;
        server_name abc.com;
        location / {
            proxy_pass http://abc.com;
            proxy_set_header  X-Real-IP  $remote_addr;     
            client_max_body_size  100m;  
        }
    }

扩展

  1. 轮询(默认)
    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

  2. weight
    指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
    例如:

upstream bakend {
server 192.168.159.10 weight=10;
server 192.168.159.11 weight=10;
}
  1. ip_hash
    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
    例如:
upstream resinserver{
ip_hash;
server 192.168.159.10:8080;
server 192.168.159.11:8080;
}

  1. fair(第三方)
    按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream resinserver{
server server1;
server server2;
fair;
}
  1. url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法

upstream resinserver{
    server squid1:3128;
    server squid2:3128;
    hash $request_uri;
    hash_method crc32;
}

upstream resinserver{
    #定义负载均衡设备的Ip及设备状态
    ip_hash;
    server 127.0.0.1:8000 down;
    server 127.0.0.1:8080 weight=2;
    server 127.0.0.1:6801;
    server 127.0.0.1:6802 backup;
}

在需要使用负载均衡的server中增加
proxy_pass http://resinserver/;


每个设备的状态设置为:
1. down 表示单前的server暂时不参与负载
2. weight 默认为1.weight越大,负载的权重就越大。
3. max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4. fail_timeout:max_fails次失败后,暂停的时间。
5. backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

nginx支持同时设置多组的负载均衡,用来给不用的server来使用。

client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug
client_body_temp_path 设置记录文件的目录 可以设置最多3层目录
location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡



参考文献:

ngnix域名分发
(其实就是配置多个server)
1. Nginx实现根据域名http、https分发配置示例 https://blog.csdn.net/baidu_35776955/article/details/78059471
2. nginx监听相同端口通过域名分发到不同的服务器 https://blog.csdn.net/gozs_cs_dn/article/details/79067749
3. nginx 反向代理和负载均衡 https://www.cnblogs.com/microtiger/p/7623858.html
4. 配置详解超详细 http://www.cnblogs.com/crazylqy/p/7149774.html
系列教程 有原理 https://www.cnblogs.com/crazylqy/category/883974.html
5. 简单安装与配置 https://blog.csdn.net/e421083458/article/details/30086413

tips:

  1. 引入子配置,避免配置污染
  • include功能:在http里加上 类似include qqq/www/*.conf
  1. 如果代理的服务是重型服务,http请求头非常大,例如在Cookie中写入很多信息,nginx会爆400错误,因为请求头超长,默认1k,需额外设置
  2. nginx常用命令
  • 重新加载配置 nginx -s reload
  1. Windows修改hosts文件 “windows”→“System32”→“drivers”→“etc” 修改hosts文件
posted @ 2018-05-29 10:48  starmoon1900  阅读(812)  评论(1编辑  收藏  举报