码迷,mamicode.com
首页 > 其他好文 > 详细

nginx实现反向代理与负载均衡

时间:2016-08-22 23:38:31      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:nginx 反向代理 负载均衡

nginx在LB Cluster集群中也可以扮演一定的角色,即反向代理与负载均衡。在一个Web服务中,来自客户端的请求可以经由nginx服务器转发至后端服务器,并且按照一定的算法实现负载均衡。




1.反向代理

    1)在192.168.10.17/24与192.168.10.77/24主机上安装nginx,提供web服务。

    编辑两台主机的主页文件内容分别为

        inode17 page 和inode77 page

    2)主机172.16.10.66提供nginx的反向代理服务

    为了与后端主机进行通信,此主机需要配置两个IP接口,另一个为192.168.10.66/24

        ifconfig eth0:0 192.168.10.66/16

    打开nginx的配置文件,在location段中添加一行

    proxy_pass  http://192.168.10.17; ##将客户端请求反代至后端服务器

    注:proxy_pass后面的路径不带uri时,其会将location的uri传递给后端主机;当proxy_pass后面的路径是一个uri时,其会将location的uri替换为proxy_pass的uri;

    3)打开网页测试

        http://172.16.10.66 

2.提供缓存

    1)在172.16.10.66主机上,打开nginx配置文件,在http{}段添加下列行,指明缓存路径,名称等相关信息

    proxy_cache_path   /var/cache/nginx/proxy_cache levels=1:2:1 keys_zone=pcache:10m;

在server{}段中添加下列几行内容

      proxy_cache  pcache;  ##引用上述定义的缓存

       proxy_cache_key  $request_uri;  ## 缓存的关键字

       proxy_cache_valid  200 302 1m;  ## 缓存元素,指明要缓存的资源

       proxy_cache_valid  301 1h;

       proxy_cache_valid  any 1h;

    2)检测语法错误,并重新载入配置文件

    3)在另一台主机上使用ab命令可以检测添加缓存前后响应速度

3.负载均衡

nginx通过upstream模块实现后端服务器的负载均衡

1)在172.16.10.66主机上,打开nginx配置文件,在http段定义upstream{}上下文

    upstream test_lb {

        server 192.168.10.17 weight=1; ## 指向后端服务器,权重默认为1

        server 192.168.10.77 weight=2; 

    }    

注:可以在上述upsteam中定义算法

    least_conn  最少连接调度算法

    least_time header|last_byte;   最短平均响应时间和最少连接

    ip_hash  源地址hash算法,将同一ip地址的访问发往同一服务器

    hash key [consistent] 基于指定的key的hash表实现请求调度

        如   hash $request_uri consistent

            hash $remote_addr

            hash $cookie_name

2)更改location中proxy_pass为:

    proxy_pass  http://test_lb;## 已定义的upstream 

3)检测语法错误,并重新载入配置文件

4)在客户机上进行测试

输入for i in `seq 10` ;do curl 172.16.10.66 ;done

可以看到两台服务器页面比例为1:2


nginx实现反向代理与负载均衡

标签:nginx 反向代理 负载均衡

原文地址:http://11650412.blog.51cto.com/11640412/1841259

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!