Nginx配置反向代理和负载均衡

Nginx是一个流行的Web容器,作为服务的入口,使用反向代理和负载均衡,达到隐藏和保护内部服务安全的作用,本文会描述Nginx反向代理和负载均衡的配置。

反向代理

在Nginx配置文件中使用 proxy_pass 配置反向代理。

server {
    listen       80;
    server_name  www.scung.cn;# 服务器地址或绑定域名

    location / { 
        proxy_pass http://localhost:5000; 
    }
}

上面的代码是一个最简单的反向代理配置,监听80端口,域名匹配www.scung.cn。localtion 定义了 / ,在其中使用 proxy_pass 进行转发,这样所有流向 www.scung.cn 的流量就全部都转到了 localhost:5000 中。

负载均衡

在反向代理的基础上,发展出了负载均衡,即同时反向代理多个服务。使用 upstream 来配置负载均衡。

upstream mysvr { 
    server localhost:5000;
    server localhost:6000;
}
server {
    listen       80;
    server_name  www.scung.cn;# 服务器地址或绑定域名
    
    location  / {         
        proxy_pass  http://mysvr;           
    }
}

使用 upstream 定义了一个对象 mysvr,在 proxy_pass 中使用即可实现负载均衡,同时将 www.scung.cn 的流量转发到 localhost:5000 和 localhost:6000 两个服务中。

在做负载均衡时,涉及到流量转发策略,Nginx提供了多种策略:轮询,加权轮询还有 ip_hash

轮询

默认配置即为轮询。

upstream mysvr { 
    server localhost:5000;
    server localhost:6000;
}

加权轮询

在轮询的基础上使用 weight 实现权重比。

upstream mysvr { 
    server localhost:5000 weight=1;
    server localhost:6000 weight=10;
}

ip_hash

在轮询基础之上使用 ip_hash 实现该策略。

upstream mysvr { 
    server localhost:5000; 
    server localhost:6000;
    ip_hash;
}

除了上述三个配置外,Nginx还提供了一些其他的配置,比如使用 backup 来表示主从,只有在主服务无法请求时才会转发到该服务,还可以定义超时次数和失败次数实现特定的效果。

发布时间:2024-04-21

其他阅读

LinqPad 8 分享

LinqPad是一个.Net快速验证工具,使得.Net开发者可以不借助Visual Studio就可以快速验证想法,毕竟vs冷启动和创建项目耗时久,负担大。本文分享一个LinqPad学习版,请勿随意传播。

C#中new和override的区别

在C#编程语言中,new 和 override 是两个重要的关键字,它们用于控制类成员方法的行为。在面向对象编程(OOP)中,理解这两个关键字的区别和用法,对于编写清晰、可维护和高效的代码至关重要。

C#中关于字符串的一些特殊点

在C#中,字符串是一个使用比较多的类型,本文会讲到字符串(string)的一些特殊点。

Entity Framework Core链接Oracle的问题

最近使用 Entity Framework Core 来链接 Oracle 11g 数据库,发现很多 LINQ 语句使用起来都会有问题,查看日志输出发现是生成SQL语句无法被 11g 版本执行,好在Oracle官方已经给我们提供了解决方案。

Linux中查看,添加,修改,删除用户和用户组

将用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段。某个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。当一个用户同时是多个组中的成员时,登录时所属的为默认组,而其他组称为附加组。本文将会介绍在 Linux 中查看,添加,修改,删除用户和用户组,注意:权限管理非常重要,可能一不小心就导致系统无法登录,请谨慎操作