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
其他阅读

Nginx重定向HTTP到HTTPS

HTTP协议以纯文本形式进行数据的交互,数据明文传输,容易被监听,窃取和伪造,HTTPS在HTTP的基础上,使用了TLS/SSL对通信过程进行加密,数据得到了有效的保护,就算被拦截到也无法获取信息,更没法实施中间人攻击。本文将会介绍如何在Nginx中配置HTTP重定向到HTTPS。

查看原文

C#扩展方法

一般来说,当我们使用某个类时,需要用到一些特别的方法,但却没有时。一般做法可能是创建一个基于该类的派生类,添加我们想要的方法,但这样做无疑增加了复杂度。所以这时候,扩展方法出现了。

查看原文

TypeScript中的数组操作

我们在编码时,总会用到数组/列表这种类型,用于在单个对象中存储多个内容。在 TypeScript 中,也已经内置了该类型,方便我们来使用。

查看原文

Winform中设置控件边框

本文将会介绍在Winform中如何设置控件的边框,可应用于Form和Panel等。

查看原文

HTTP方法

HTTP报文中包含了方法,指的是客户端希望服务器对资源执行的动作,是一个单独的词,比如GET,POST,OPTIONS等,本文将会介绍主流的几种方法。

查看原文