Nginx 如何配置http server 、负载均衡(反向代理)
目录
- 1. 关于 Nginx
- 2. 配置http server
- 3. 配置负载均衡
本文主要介绍 Nginx中如何配置 http server,负载均衡(反向代理)。
1. 关于 Nginx
Nginx是一个开源的、高性能的、稳定的、简单的、功能丰富的HTTP和反向代理服务器,也可以用作IMAP/POP3/SMTP代理服务器。它使用了异步事件驱动的架构,可以支持高并发连接。
Nginx的主要功能包括:
- HTTP服务器:Nginx可以作为一个Web服务器使用,提供HTTP服务。它支持静态文件服务,SSL和TLS协议,虚拟主机等功能。
- 反向代理和负载均衡:Nginx可以作为反向代理服务器,代理HTTP或非HTTP服务。同时,它还提供了负载均衡的功能,可以将请求分发到后端的多个服务器。
- 邮件代理服务器:Nginx还可以作为IMAP/POP3/SMTP代理服务器。
- TCP/UDP代理服务器:Nginx可以代理TCP和UDP服务。
Nginx的设计目标是提供高性能、高并发、低内存使用的网络服务。它广泛应用于网站的服务端,是目前最流行的Web服务器之一。
与Nginx类似的软件主要包括以下几种:
- Apache HTTP Server:这是最流行的Web服务器软件之一,功能强大,模块众多,可以通过配置满足各种需求。
- Microsoft IIS:这是微软提供的Web服务器软件,与Windows系统集成度高,支持.NET等微软技术。
- Lighttpd:这是一个轻量级的Web服务器软件,资源占用少,性能优秀,适合在资源有限的环境中使用。
- Caddy:这是一个新型的Web服务器软件,配置简单,自动支持HTTPS。
- Tomcat:这是Apache的一个开源项目,主要用来运行Java代码,常常被用作Web服务器和Java应用服务器。
- Node.js:虽然主要是一个JavaScript运行环境,但由于其事件驱动和非阻塞I/O模型,也常常被用来编写Web服务器。
以上这些软件都可以作为Web服务器使用,但各自的特性和优势不同,需要根据实际需求选择合适的软件。
2. 配置http server
在Nginx中,配置HTTP服务器主要是通过编辑Nginx的配置文件,通常是nginx.conf。
以下是一个基本的HTTP服务器配置示例:
http {server {listen 80; # 监听80端口server_name example.com; # 设置服务器名称location / {root /var/www/html; # 设置网站根目录index index.html index.htm; # 设置默认首页}# 处理错误页面error_page 500 502 503 504 /50x.html;location = /50x.html {root /var/www/html;}}
}
以上配置表示,Nginx会监听80端口,处理来自example.com
的请求。
当请求的URL路径为/
(即网站的根路径)时,Nginx会在/var/www/html
目录下查找index.html
或index.htm
文件并返回。如果发生500、502、503或504错误,Nginx会返回/var/www/html/50x.html
文件的内容。
以上只是一个基本的配置示例,实际上Nginx的配置可以非常复杂,可以配置反向代理、负载均衡、URL重写等高级功能。具体的配置方法需要根据实际需求进行。
接着,再看下,如何配置多个http server。
在Nginx中,可以在配置文件中定义多个server块来配置多个HTTP服务器。
每个server块代表一个虚拟主机,可以监听不同的端口,或者处理不同的域名。
以下是一个配置多个HTTP服务器的示例:
http {# 第一个HTTP服务器server {listen 80;server_name example1.com;location / {root /var/www/example1;index index.html index.htm;}}# 第二个HTTP服务器server {listen 8080;server_name example2.com;location / {root /var/www/example2;index index.html index.htm;}}
}
以上配置表示,Nginx会监听80, 8080端口,处理来自example1.com
和example2.com
的请求。
当请求的URL路径为/
时,如果请求的主机名为example1.com
,Nginx会在/var/www/example1
目录下查找index.html
或index.htm
文件并返回;
如果请求的主机名为example2.com
,Nginx会在/var/www/example2
目录下查找index.html
或index.htm
文件并返回。
3. 配置负载均衡
Nginx支持以下几种负载均衡方式:
- 轮询(Round Robin):这是默认的负载均衡方式。每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
- 权重(Weight):不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此Nginx允许指定每个服务器的处理能力。权重越高,分配的请求越多。
- IP Hash:每个请求的IP的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
- 最少连接(Least Connections):优先分配给当前连接数最少的服务器,适用于请求处理时间相差较大的情况。
- URL Hash:按照访问URL的hash结果来分配请求,使得每个URL定向到同一个后端服务器,可以在后端服务器生成缓存的情况下提高系统效率。
以上负载均衡方式中,轮询、权重和IP Hash是Nginx内置支持的,最少连接和URL Hash需要使用Nginx的第三方模块,如ngx_http_upstream_least_conn_module
和ngx_http_upstream_hash_module
。
在Nginx中,配置负载均衡主要是通过upstream模块和proxy_pass指令实现的。以下是一个基本的负载均衡配置示例:
http {upstream backend {server backend1.example.com;server backend2.example.com;}server {listen 80;server_name example.com;location / {proxy_pass http://backend; # 将请求转发到upstream定义的后端服务器}}
}
以上配置表示,Nginx会监听80端口,处理来自example.com的请求。
当请求的URL路径为/(即网站的根路径)时,Nginx会将请求轮询地转发到backend1.example.com
和backend2.example.com
。
除了基本的轮询负载均衡,Nginx还支持其他几种负载均衡方式,例如权重、IP Hash等。
配置基于权重的负载均衡可以通过在upstream模块中为每个server指令添加weight参数来实现。
以下是一个基于权重的负载均衡配置示例:
http {upstream backend {server backend1.example.com weight=3;server backend2.example.com;}server {listen 80;server_name example.com;location / {proxy_pass http://backend; # 将请求转发到upstream定义的后端服务器}}
}
以上配置表示,Nginx会监听80端口,处理来自example.com
的请求。
当请求的URL路径为/
(即网站的根路径)时,Nginx会将请求转发到backend定义的后端服务器。这些服务器会按照权重的方式进行负载均衡,backend1.example.com的
权重为3,backend2.example.com
的权重为1(默认值),因此backend1.example.com
会接收到更多的请求。
以上,本文主要介绍了 Nginx中配置 http server,负载均衡(反向代理)的基本方式。
相关文章:
Nginx 如何配置http server 、负载均衡(反向代理)
目录 1. 关于 Nginx2. 配置http server3. 配置负载均衡 本文主要介绍 Nginx中如何配置 http server,负载均衡(反向代理)。 1. 关于 Nginx Nginx是一个开源的、高性能的、稳定的、简单的、功能丰富的HTTP和反向代理服务器,也可以用作IMAP/POP3/SMTP代理…...

windows docker desktop配置加速地址
目录 为什么常见加速地址在docker desktop上配置 为什么 https://hub.docker.com 是官方的镜像仓库地址,但是它的服务器地址是在国外,有时候访问和下载的速度差强人意。不过好在,我们可以进行远程仓库的设置,将仓库镜像地址设置为…...

戏剧影视设计制作虚拟仿真培训课件提升学生的参与感
说起影视制作,知名的影视制片人寥寥无几,大多数人还在依靠摄影机拍摄实景或搭建实体场景来不断精进场景布局和导演效果,成本高、投入人员多且周期长,随着VR虚拟现实技术的不断发展,利用VR模拟仿真技术进行影视制作实操…...

Transformer预测 | Pytorch实现基于Transformer的锂电池寿命预测(NASA数据集)
文章目录 效果一览文章概述模型描述程序设计参考资料效果一览 文章概述 Pytorch实现基于Transformer 的锂电池寿命预测,环境为pytorch 1.8.0,pandas 0.24.2 随着充放电次数的增加,锂电池的性能逐渐下降。电池的性能可以用容量来表示,故寿命预测 (RUL) 可以定义如下: SOH(t…...
取出SQLite数据(基本游标)
前面一节中已经为Starbuzz创建了一个SQLite帮助器。 目前还是从Java Drink类获取数据,这时候要修改这个应用从SQLite数据库获取数据。 本文所有代码均存放于 https://github.com/MADMAX110/Starbuzz 一、修改DrinkActivity来使用Starbuzz数据库 基本步骤ÿ…...

信息增益,经验熵和经验条件熵——决策树
目录 1.经验熵 2.经验条件熵 3.信息增益 4.增益比率 5.例子1 6.例子2 在决策树模型中,我们会考虑应该选择哪一个特征作为根节点最好,这里就用到了信息增益 通俗上讲,信息增益就是在做出判断时,该信息对你影响程度的大小。比…...

手摸手系列之批量修改MySQL数据库所有表中某些字段的类型
在迁移老项目的数据库时,使用Navicat Premium的数据传输功能同步了表结构和数据。但是,发现某些字段的数据类型出现了错误,例如,租户ID从Oracle的NUMBER类型变成了MySQL的decimal(10),正确的应该是bigInt(20)。此外&am…...
视频号直播弹幕采集
系列文章目录 websocket逆向http拦截websocket拦截视频号直播弹幕采集 系列文章目录前言技术分析分析技术选择前提准备事件分析消息去重用户进房用户发言用户送礼用户点赞用户唯一id前言 很多小伙伴倒在了礼物事件,还有用户唯一标识下。 本篇文章将讲解视频号直播弹幕的获取的…...

PostgreSQL ash —— pgsentinel插件 学习与踩坑记录
零、 注意事项 测试发现,pgsentinel插件在pg_active_session_history视图记录条数较多时,存在严重的内存占用问题,群里的其他朋友反馈还可能存在严重的内存泄漏问题。本文仅用于学习和测试,未用于生产环境。 设置 pgsentinel_ash.…...

HarmonyOS/OpenHarmony原生应用开发-华为Serverless云端服务支持说明(一)
云端服务的实现是HarmonyOS/OpenHarmony原生应用开发的一个重要的环节,如果用户端是鸿蒙原生应用,但是服务端即云端还是基于传统的各种WEB网络框架、数据库与云服务器,那么所谓的原生应用开发实现的数据即后端服务是和以前、现在的互联网、移…...

3分钟基于Chat GPT完成工作中的小程序
1. 写在前面 GPT自从去年爆发以来,各大公司在大模型方面持续发力,行业大模型也如雨后春笋一般发展迅速,日常工作中比较多的应用场景还是问答模式,作为写程序的辅助也偶尔使用。今天看到一篇翻译的博客“我用 ChatGPT,…...

使用hugo+github搭建免费个人博客
使用hugogithub搭建免费个人博客 前提条件 win11电脑一台电脑安装了git电脑安装了hugogithub账号一个 个人博客本地搭建 初始化一个博客 打开cmd窗口,使用hugo新建一个博客工程 hugo new site blogtest下载主题 主题官网:themes.gohugo.io 在上面…...

打印字节流和字符流
打印字节流和字符流 printStream/ printWriter的构造器和方法都是一样的 package printfile;import java.io.FileOutputStream; import java.io.OutputStream; import java.io.PrintStream; import java.io.PrintWriter; import java.nio.charset.Charset;public class Prin…...
elementplus下载表格为excel格式
安装xlsx npm i --save https://cdn.sheetjs.com/xlsx-0.20.0/xlsx-0.20.0.tgz引入xlsx并使用 import XLSX from xlsx;const tableRef ref<any>(null); // 导出为 Excel const exportToExcel () > {// 获取 el-table 的引用tableRef.value tableRef.value || doc…...

聊聊僵尸进程
文章目录 1. 前言1.1 什么是僵尸进程1.2 为什么需要关注僵尸进程 2. 僵尸进程的产生2.2 为什么会产生僵尸进程2.3 举个栗子 3. 僵尸进程的影响3.1 僵尸进程为何会占用系统资源3.2 操作系统如何知道哪个资源需要被释放3.3 什么是进程表3.4 什么是PCB 5. 如何处理僵尸进程4.1 识别…...

stm32的时钟、中断的配置(针对寄存器),一些基础知识
一、学习参考资料 (1)正点原子的寄存器源码。 (2)STM32F103最小系统板开发指南-寄存器版本_V1.1(正点) (3)STM32F103最小系统板开发指南-库函数版本_V1.1(正点࿰…...
Vue14 监视属性简写
监视属性简写 当监视属性只有handler时,可以使用简写 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>天气案例_监视属性_简写</title><!-- 引入Vue --><script type"text/javascript&…...

基于docker+Keepalived+Haproxy高可用前后的分离技术
基于dockerKeepalivedHaproxy高可用前后端分离技术 架构图 服务名docker-ip地址docker-keepalived-vip-iphaproxy-01docker-ip自动分配 未指定ip192.168.31.252haproxy-02docker-ip自动分配 未指定ip192.168.31.253 安装haproxy 宿主机ip 192.168.31.254 宿主机keepalived虚…...
安装配置deep learning开发环境
1. 下载安装anacondahttps://www.anaconda.com/download-success vim ~/.condarcchannels: - bioconda - https://mirrors.ustc.edu.cn/anaconda/pkgs/main/ - https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/ - https://mirrors.tuna.tsinghua.edu.cn/anaco…...

Docker基础(CentOS 7)
参考资料 hub.docker.com 查看docker官方仓库,需要梯子 Docker命令大全 黑马程序员docker实操教程 (黑马讲的真的不错 容器与虚拟机 安装 yum install -y docker Docker服务命令 启动服务 systemctl start docker停止服务 systemctl stop docker重启…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...