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

Angular中制作一个按钮组件

本文将会介绍如何在Angular中制作一个按钮组件,直接在原生按钮上添加特性即可使用,还提供多种颜色方便切换。

查看原文

使用Cherry Studio搭配DeepSeek构建知识库

上篇文章,介绍了怎么在本地部署DeepSeek大模型服务,但是仅限于对话聊天,本文在之前的基础上,用DeepSeek搭配上Cherry Studio来构建个人知识库。

查看原文

HTTP方法

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

查看原文

我的读书清单

分享互联网人的读书清单,从2024年开始,本文会整理我读过的书籍,按时间排序,编辑成一份读书清单。

查看原文

Angular中开发一个代码库

Angular 的复杂项目中,我们可以对其拆分出不同功能模块进行开发,但是对于大型项目,或者我们直接考虑拆成库,将一部分的模块合起来组成一个库,方便复用,比如我们熟悉的各种设计组件库,就是一堆模块的合集。

查看原文