nginx反向代理 负载均衡的使用

来源:赵克立博客 分类: Linux 标签:nginx发布时间:2018-05-19 10:54:41最后更新:2019-05-18 11:37:45浏览:575
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2019-05-18 11:37:45
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章

下载地址

http://nginx.org/en/download.html

反向代理

反向代理使用场景,比如你访问www.aaa.com 请求需要被发送到对应的反向代理服务器,反向代理服务器根据你访问的域名决定把这个请求转发给对应的服务器处理,实现负载均衡

下面是一个简单的配置

在本地搭建好几个网站 80端口给nginx 8080 8081分别搭建两个网站服务,用iis apache都可以。然后在host文件中添加两个本地域名如下

127.0.0.1 test1.loc
127.0.0.1 test2.loc


下面是nginx的配置,当默认用80端口访问的时候把对应的域名转发给对应的服务去处理,这样就不用带端口去访问啦

server {
        listen       80; 
        server_name  test1.loc;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location  / {
        proxy_pass   http://127.0.0.1:8081;
        index  index.html index.htm;
        }
    }
server {
        listen       80;
        server_name  test2.loc;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
        proxy_pass   http://127.0.0.1:8082;
        index  index.html index.htm;
        }
    }

把上面的代码保存成一个vhost.conf文件然后打开nginx.conf在http{}里面加入 include vhost.conf

http{

............

............

include vhost.conf

}

另外在http段还得加入下面转发真实的客户端ip,要不然程序里取到的全都是nginx这台服务器的ip地址

http{
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
}

负载均衡

upstream webbs {
    ip_hash;
    server 192.168.11.68:20201;
    server 192.168.11.69:20201 weight=100 down;
    server 192.168.11.70:20201 weight=100;
    server 192.168.11.71:20201 weight=100 backup;
    server 192.168.11.72:20201 weight=100 max_fails=3 fail_timeout=30s;
}
server {
    listen 80;
    server name www.linuxidc.com;
    location / {
        proxy_pass http://webbs;        #引用upstream
    }
}

配好好后当用户访问www.linuxidc.com时就会分配给上面的一组服务器来处理,ip_hash作用,每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session不能跨服务器的问题。如果后端服务器down掉,要手工down掉。

参数说明: 

  1. down:表示当前的server暂时不参与负载 

  2. weight:默认为1.weight越大,负载的权重就越大。 

  3. backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。 

  4. 上例中192.168.11.72:20201 设置最大失败次数为 3,也就是最多进行 3 次尝试,且超时时间为 30秒。max_fails 的默认值为 1,fail_timeout 的默认值是 10s。 

注意,当upstream中只有一个 server 时,max_fails 和 fail_timeout 参数可能不会起作用。 weight\backup 不能和 ip_hash 关键字一起使用。 




微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python