nginx反向代理与负载均衡

之前写了nginx在linux(CentOS 7.2 )下的安装与配置 传送门
这篇实现一下反向代理与负载均衡的配置。

一、几个基本概念

1、正向代理

比如网站A访问不了网站B,但C可以访问B,那我们可以通过访问C来访问B,我们明确知道B是什么。

2、反向代理

比如服务器集群中每台服务器内容都一样的时候,我们通过第三方服务器来访问集群,我们并不知道是集群中哪台服务器为我们提供的内容。

3、nginx通过反向代理实现负载均衡

用户首先访问nginx服务器,然后nginx服务器再从服务器集群中选择压力较小的服务器,然后将访问引向该服务器。若服务器集群中某个服务器崩溃,那么从待选服务器列表中删除该服务器,nginx不会将访问请求引入该服务器。

4、HTTP Upstream模块

HTTP Upstream模块是Nginx服务器的一个重要模块,实现在轮询和客户端ip之间实现后端的负载均衡。
ip_hash指令:如果客户端已经访问了集群中的服务器A并登录,那么第二次请求的时候,会将请求通过哈希算法自动定位到该服务器,而不是重新定位到集群中的一个服务器
server 指定集群中服务器权重(weight)

二、mac下安装nginx

首先安装 homebrew ,在终端粘贴如下命令

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
nginx反向代理与负载均衡_第1张图片
安装homebrew

若安装失败 用如下命令

/usr/bin/ruby -e "$(curl -fsSL --insecure https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装完成后 看是否能找到nginx

brew search nginx
nginx反向代理与负载均衡_第2张图片
search

发现能找到 开始安装

brew install nginx #安装
brew info nginx #安装完成后查看nginx版本信息
nginx -v #查看版本信息

启动nginx

nginx #启动nginx
nginx -s stop  #停止 
nginx -s reload   #重启 

然后在浏览器打开http://localhost:8080/发现启动成功

nginx反向代理与负载均衡_第3张图片
nginx启动成功

二、配置反向代理、负载均衡

打开nginx配置文件

vi /usr/local/etc/nginx/nginx.conf

修改配置项

worker_processes  4; #允许生成的进程数,默认为1
events{
   worker_connections 1024;#最大连接数,默认为512
}
http
{
    upstream test.com {
        #每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
        #ip_hash;
        #upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。
        server 47.95.243.254:8089 weight=2;
        server 47.94.168.174:80 weight=3;
    }

    #虚拟主机的配置
    server
    {
        listen 8080;
        #对 "/" 启用反向代理
        location / {
            proxy_pass http://test.com;
         }
    }
}
//有两种转发方式:
//(1)根据域名转发 需要配置多个http块 分别有一个 upstream 和一个server里的 location
//(2)根据路径转发 可以有多个upstream, 每个upstream  分别对应一个server里的location

测试nginx配置文件是否正确 正确返回success

nginx -t 
测试配置是否正确

如果使用自定义配置文件 执行如下命令

nginx -c /path/to/self.conf #配置文件路径

配置项对应的页面分别是


nginx反向代理与负载均衡_第4张图片
server1

以及


nginx反向代理与负载均衡_第5张图片
server2

如果不指定 ip_hash,当前配置访问结果如下,请求5次,有2次落在server1,3次落在server2上


nginx反向代理与负载均衡_第6张图片
指定weight

如果指定了ip_hash,则以后都落在第一次请求的server


nginx反向代理与负载均衡_第7张图片
指定ip_hash

nginx反向代理与负载均衡_第8张图片
指定ip_hash后

~ end

你可能感兴趣的:(nginx反向代理与负载均衡)