nginx(一)nginx配置反向代理与负载均衡

简介: 最近在研究秒杀程序的设计及服务器配置。涉及到秒杀这个问题,那肯定就意味着大流量高并发访问,那么大概率我们需要做反向代理与负载均衡配置。那么如何配置nginx的反响代理与负载均衡呢?

最近在研究秒杀程序的设计及服务器配置。

涉及到秒杀这个问题,那肯定就意味着大流量高并发访问,那么大概率我们需要做反向代理与负载均衡配置。

那么如何配置nginx的反响代理与负载均衡呢?

一:配置服务器环境

首先,我们大概需要准备三台服务器

一台做反向代理,剩下的两台做负载均衡的演示。

反向代理服务器只需要配置nginx环境即可,因为,其只做为请求转发的中转站。

两台负载均衡服务器,需要配置lnmp环境,具体配置过程请移步《Centos7.6配置lnmp

上边的方法是属于有那个条件的同学使用,正常一台服务器也行,在服务器上配置nginx和apache,nginx做反向代理,将请求转发至apache即可。

Lamp环境配置,请移步《LAMP环境配置及NGINX安装

二:负载均衡配置实例

下面我先放一下我测试使用的一个nginx配置示例,具体的配置项下边会有一个大概的解释:

ini

复制代码

http{
    # 配置负载均衡
    # 这里的域名要和下面proxy_pass的一样
    upstream  guanchao.site {   
        # 将请求分配至最小链接
        least_conn;
        # 每个请求会按照访问ip的hash值分配,这样同一客户端连续的Web请求都会被分发到同一server进行处理,可以解决session的问题。如果server挂掉,能自动剔除。     
        # ip_hash;
        # weigth参数表示权值,权值越高被分配到的几率越大
        # 下面表示219.44有2分之1几率,132.2有2分之1几率
        server    47.100.219.44:80 max_fails=2 fail_timeout=5s weight=1; 
        server    8.140.132.2:80 max_fails=2 fail_timeout=5s weight=1; 
    #     server    111.231.162.140:80 max_fails=2 fail_timeout=5s weight=1; 
    }     
    server {  
        listen       80; 
        server_name  guanchao.site;  
        location / {  
            # 配置负载均衡
            proxy_pass http://guanchao.site;  #请求转向taishan定义的服务器列表
            proxy_set_header Host $host;#将请求头转发给后端服务器
            proxy_set_header X-Forward-For $remote_addr;#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
            proxy_connect_timeout 2s; 最长链接时间为2s
            proxy_redirect default;  
        }  
        error_page   500 502 503 504  /50x.html;  
        location = /50x.html {  
            root   html;  
        }  
    }
}

111.231.162.140这个服务器作为反向代理服务器

47.100.219.44与8.140.132.2这两台服务器作为负载均衡服务器

以上的配置得到的效果:

image.png

image.png

我们可以看到,在同一个域名下,多次刷新,我们看到的页面是不同的,因此,证明我们上边的反向代理及负载均衡的配置是没有问题的。

三:负载均衡策略

1:轮询

这种是默认的策略,把每个请求按顺序逐一分配到不同的server,如果server挂掉,能自动剔除。

ini

复制代码

# 配置负载均衡
    # 这里的域名要和下面proxy_pass的一样
    upstream  guanchao.site {   
        # weigth参数表示权值,权值越高被分配到的几率越大
        # 下面表示44有2分之1几率,2有2分之1几率
        server    47.100.219.44:80 max_fails=2 fail_timeout=5s weight=1; 
        server    8.140.132.2:80 max_fails=2 fail_timeout=5s weight=1; 
    }

2:最少链接

ini

复制代码

# 配置负载均衡
    # 这里的域名要和下面proxy_pass的一样
    upstream  guanchao.site {   
        # 将请求分配至最小链接
        least_conn;
        # weigth参数表示权值,权值越高被分配到的几率越大
        # 下面表示44有2分之1几率,2有2分之1几率
        server    47.100.219.44:80 max_fails=2 fail_timeout=5s weight=1; 
        server    8.140.132.2:80 max_fails=2 fail_timeout=5s weight=1; 
    }

3:权重weight

ini

复制代码

# 配置负载均衡
    # 这里的域名要和下面proxy_pass的一样
    upstream  guanchao.site {   
        server    47.100.219.44:80 max_fails=2 fail_timeout=5s weight=1; 
        server    8.140.132.2:80 max_fails=2 fail_timeout=5s weight=1; 
    }

4:ip_hash

每个请求会按照访问ip的hash值分配,这样同一客户端连续的Web请求都会被分发到同一server进行处理,可以解决session的问题。如果server挂掉,能自动剔除。

ini

复制代码

 
# 配置负载均衡
    # 这里的域名要和下面proxy_pass的一样
    upstream  guanchao.site {   
        # 每个请求会按照访问ip的hash值分配,这样同一客户端连续的Web请求都会被分发到同一server进行处理,可以解决session的问题。如果server挂掉,能自动剔除。     
        ip_hash;
        # weigth参数表示权值,权值越高被分配到的几率越大
        # 下面表示44有2分之1几率,2有2分之1几率
        server    47.100.219.44:80 max_fails=2 fail_timeout=5s weight=1; 
        server    8.140.132.2:80 max_fails=2 fail_timeout=5s weight=1; 
    }

 

以上四个策略可以组合叠加使用。

剩下配置的用处,我在nginx配置实例中都有备注。

四:其他参数

参数列表如下:

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

以上大概就是nginx的反响代理与负载均衡的配置,

有好的建议,请在下方输入你的评论。

欢迎访问个人博客 guanchao.site

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
27天前
|
运维 前端开发 应用服务中间件
LNMP详解(八)——Nginx动静分离实战配置
LNMP详解(八)——Nginx动静分离实战配置
28 0
|
1月前
|
应用服务中间件 nginx
Nginx中如何配置中文域名?
Nginx中如何配置中文域名?
46 0
|
1月前
|
弹性计算 负载均衡 容灾
slb配置后端服务器组
配置阿里云SLB后端服务器组涉及四个主要步骤:创建服务器组、添加ECS实例、关联监听规则和设定负载均衡策略。这使得流量根据业务需求和服务器特性进行转发,便于应用架构的灵活管理和扩展,支持蓝绿部署、灰度发布,并通过多可用区提升系统可用性和容灾能力。
26 3
|
19天前
|
负载均衡 算法 应用服务中间件
面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
字节跳动面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
33 0
|
26天前
|
前端开发 应用服务中间件 nginx
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
102 0
|
3天前
|
JavaScript 前端开发 应用服务中间件
angular引入包、路由权限配置、打包问题与nginx配置问题(简单部署)
angular引入包、路由权限配置、打包问题与nginx配置问题(简单部署)
11 0
|
3天前
|
前端开发 JavaScript 应用服务中间件
前端vue2、vue3去掉url路由“ # ”号——nginx配置(二)
前端vue2、vue3去掉url路由“ # ”号——nginx配置
19 0
|
6天前
|
安全 应用服务中间件 网络安全
SSL原理、生成SSL密钥对、Nginx配置SSL
现在,你的Nginx虚拟主机应该已经配置了SSL,可以通过HTTPS安全访问。确保在生产环境中使用有效的SSL证书来保护通信的安全性。
19 0
|
8天前
|
域名解析 缓存 负载均衡
Nginx正向代理域名的配置
Nginx正向代理域名的配置
|
9天前
|
前端开发 JavaScript 应用服务中间件
修改Jeecg-boot context-path(附加图片+Nginx配置)
修改Jeecg-boot context-path(附加图片+Nginx配置)
16 0