当前位置: 首页 > article >正文

nginx入门,部署静态资源,反向代理,负载均衡使用

Nginx在linux上部署静态资源

在这里插入图片描述

概念介绍

Nginx可以作为静态web服务器来部署静态资源。这里所说的静态资源是指在服务端真实存在,并且能够直接展示的一些文件,比如常见的html页面、css文件、js文件、图片、视频等资源。

相对于Tomcat,Nginx处理静态资源的能力更加高效,所以在生产环境下,一般都会将静态资源部署到Nginx中.

server {listen 80;				#监听端口	server_name localhost;	#服务器名称location / {			#匹配客户端请求urlroot html;			#指定静态资源根目录  其中html是文件夹的名字index index.html;	#指定默认首页}
}

案例演示(我是用docker安装的Nginx)

编写一个DemoNginx.html文件,将这个文件部署到nginx中,然后通过nginx访问html静态资源。

docker inspect mynginx # 看看挂载的目录在那里

在这里插入图片描述

编写的html文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>DemoNginx</title>
</head>
<body>
<h1>  nginx部署静态资源</h1>
</body>
</html>

1、 nginx默认显示的就是这个index.html 网页文件
在这里插入图片描述
我们把自己写好的文件上传到这个目录 (如果你的名字也叫index.html 直接替换完成就可以,如果不是还需要进行后面的步骤)
在这里插入图片描述

这个推荐个小工具(可以用命令快速上传本机文件) rz 是一个在 Linux/Unix 系统中用于 接收文件 的命令,常用于终端工具(如
Xshell、SecureCRT、FinalShell、Mobaxterm 等)配合 zmodem
协议从本地上传文件到服务器。你在通过终端连接到 Linux 服务器时,执行 rz,它会弹出一个文件选择窗口(前提是你的终端工具支持
zmodem 协议),你选择本地文件后,就会被上传到当前目录。
安装教程

sudo yum install lrzsz -y  # 安装
rz  # 弹出对话框让你选择文件, 默认会上传到当目录
  1. 更新配置文件
    在这里插入图片描述


这段配置的意思是:当访问Nginx服务器的根路径 / 时,Nginx会查找并返回 /usr/share/nginx/html 目录下的
DemoNginx.html 文件。如果该文件不存在,将返回一个 404 错误。

3、浏览器通过 ip访问(80端口可以不写)
在这里插入图片描述

部署一组静态资源(在默认配置的情况下演示,不动配置文件)

1、我的文件有首页index.html ,我想把nginx的index删掉, 这样就不需要配置 nginx.conf 文件了
在这里插入图片描述
这样就直接OK了(配置文件都不用改)
在这里插入图片描述

Nginx反向代理入门(本机)

引入:

正向代理–代理的是用户–服务器不知道用户是谁

正向代理服务器是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。(科学上网就是这个原理)

反向代理----代理的是服务器端,用户不知道是哪台服务器提供的服务。

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源,反向代理服务器负责将请求转发给目标服务器。用户不需要知道目标服务器的地址,也无须在用户端作任何设定,对于用户来说,访问反向代理服务器是完全无感知的。

入门使用nginx配置反向代理(为了方便在本机演示 MAC系统)

1、 修改配置文件 nginx.conf

    server {listen       88;server_name  localhost;location / {proxy_pass http://localhost:10100;}     } 	
listen 88; 表示这个 server 区块监听 本机的 88 端口。所以你访问http://localhost:88 的时候,就会进入这个服务。 
server_name localhost;表示这个服务匹配的域名是 localhost。 
在本地开发环境中一般是默认这样写的(正式部署时可以改成你自己的域名)

在这里插入图片描述

2、检查配置文件,并重新加载

    nginx  -t   			# 检查配置文件是否正确 nginx  -s reload		# 重新加载配置文件

在这里插入图片描述

3 、进行访问测试

在这里插入图片描述
在这里插入图片描述

负载均衡

概念介绍

早期的网站流量和业务功能都比较简单,单台服务器就可以满足基本需求,但是随着互联网的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服务器组成应用集群,进行性能的水平扩展以及避免单点故障出现。

**应用集群:**将同一应用部署到多台机器上,组成应用集群,接收负载均衡器分发的请求,进行业务处理并返回响应数据

**负载均衡器:**将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理

此处的负载均衡器,我们将会使用Nginx来实现,而Nginx的负载均衡是基于反向代理的,只不过此时所代理的服务器不是一台,而是多台。

案例演示

1、启动3个服务相同但是端口不同的服务

*🔗不会启动相同的服务,端口不同见教程
在这里插入图片描述
里面提供一个接口
在这里插入图片描述

2、在nginx中配置负载均衡

打开nginx的配置文件nginx.conf并增加如下配置:

    upstream targetsever{server localhost:10100;server localhost:10101;server localhost:10102;}server {listen       88;server_name  localhost;location / {proxy_pass http://targetsever;}}

在这里插入图片描述

3、检查配置文件,并重新加载

nginx.exe -t   				# 检查配置文件是否正确
nginx.exe -s reload			# 重新加载配置文件 s是signal的缩写

在这里插入图片描述

4、测试时,我们直接访问nginx的88端口此时nginx会根据负载均衡策略,将请求转发到后面的服务器。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我在浏览器中访问了六次nginx的88端口, 可以发现默认的策略是轮询, 2次一轮

负载均衡算法

在nginx中提供了很多的负载均衡算法,常见的负载均衡算法如下所示:

名称说明特点
round robin轮询方式默认的负载均衡算法,按照请求的顺序依次分配给后端服务器。
random随机随机选择一个后端服务器来处理请求
url_hash依据url分配方式根据客户端请求url的hash值,来分发请求, 同一个url请求, 会发转发到同一个服务器上
ip_hash依据ip分配方式根据客户端请求的IP地址计算hash值, 根据hash值来分发请求, 同一个IP发起的请求, 会发转发到同一个服务器上
weight权重方式根据权重分发请求,权重大的分配到请求的概率大
least_conn依据最少连接方式哪个服务器当前处理的连接少, 请求优先转发到这台服务器

场景对比

在这里插入图片描述

random算法

upstream targetserver {random;server ip:端口;server ip:端口;
}

url_hash算法

upstream targetserver {hash $request_uri;server ip:端口;server ip:端口;
}

ip_hash算法

upstream targetserver {ip_hash;server ip:端口;server ip:端口;
}

weight算法

upstream targetserver {server ip:端口 weight=5;server ip:端口 weight=1; 
}

least_conn算法

upstream targetserver {least_conn;server ip:端口;server ip:端口;
}

相关文章:

nginx入门,部署静态资源,反向代理,负载均衡使用

Nginx在linux上部署静态资源 概念介绍 Nginx可以作为静态web服务器来部署静态资源。这里所说的静态资源是指在服务端真实存在&#xff0c;并且能够直接展示的一些文件&#xff0c;比如常见的html页面、css文件、js文件、图片、视频等资源。 相对于Tomcat&#xff0c;Nginx处理…...

智膳优选 | AI赋能的智慧食堂管理专家 —— 基于飞书多维表格和扣子(Coze)的智能解决方案

智膳优选 | AI赋能的智慧食堂管理专家 基于飞书多维表格和扣子&#xff08;Coze&#xff09;的智能解决方案 数据驱动餐饮管理&#xff0c;让每一餐都是营养与经济的完美平衡&#xff01; “智膳优选”通过整合飞书与Coze&#xff0c;将数据智能引入校园餐饮管理&#xff0…...

深入解析 MySQL 中的日期时间函数:DATE_FORMAT 与时间查询优化、DATE_ADD、CONCAT

深入解析 MySQL 中的日期时间函数&#xff1a;DATE_FORMAT 与时间查询优化 在数据库管理和应用开发中&#xff0c;日期和时间的处理是不可或缺的一部分。MySQL 提供了多种日期和时间函数来满足不同的需求&#xff0c;其中DATE_FORMAT函数以其强大的日期格式化能力&#xff0c;…...

最新的es版本忘记密码,重置密码

刚刚安装了最新的es版本,就忘了密码,怎么重置密码呢? 一、进入es的斌目录 #进入es文件/bin 目录 ./elasticsearch-reset-password -u elastic 二 、输入对应的密码 然后再次访问 我的是去掉了ssl的访问 三、如果报错:解决 [main] WARN...

Compose Multiplatform+Kotlin Multiplatfrom 第五弹跨平台 截图

截图功能 Compose MultiplatformKotlin Multiplatfrom下实现桌面端的截图功能&#xff0c;起码搞了两星期&#xff0c;最后终于做出来了&#xff0c;操作都很流畅&#xff0c;截取的文件大小也正常&#xff0c;可参考支持讨论&#xff01; 功能效果 代码实现 //在jvmMain下创…...

Elasticearch数据流向

Elasticearch数据流向 数据流向图 --- config: layout: elk look: classic theme: mc --- flowchart LR subgraph s1["图例"] direction TB W["写入流程"] R["读取流程"] end A["Logstash Pipeline"] -- 写入请求 --> B["Elas…...

在docker里装rocketmq-console

首先要到github下载&#xff08;这个一般是需要你有梯子&#xff09; GitHub - apache/rocketmq-externals at release-rocketmq-console-1.0.0 如果没有梯子&#xff0c;用下面这个百度网盘链接下 http://链接: https://pan.baidu.com/s/1x8WQVmaOBjTjss-3g01UPQ 提取码: fu…...

使用Python写入JSON、XML和YAML数据到Excel文件

在当今数据驱动的技术生态中&#xff0c;JSON、XML和YAML作为主流结构化数据格式&#xff0c;因其层次化表达能力和跨平台兼容性&#xff0c;已成为系统间数据交换的通用载体。然而&#xff0c;当需要将这类半结构化数据转化为具备直观可视化、动态计算和协作共享特性的载体时&…...

从零开始构建智能聊天机器人:Rasa与ChatGPT API实战教程

引言&#xff1a;AI对话系统的时代机遇 在数字化转型浪潮中&#xff0c;聊天机器人已成为连接用户与服务的关键纽带。无论是客服系统中的724小时即时响应&#xff0c;还是智能家居中的语音交互&#xff0c;聊天机器人正在重塑人机交互方式。本文将通过详细教程&#xff0c;手把…...

编码常见的 3类 23种设计模式——学习笔记

一、创建型(用于方便创建实例) 1. 单例模式 优点&#xff1a; 确保系统中只有一个实例存在&#xff0c;避免多个实例导致的资源冲突或数据不一致问题。例如&#xff0c;数据库连接池、线程池等全局资源管理器适合用单例实现。 减少频繁创建和销毁对象的开销&#xff0c;尤其适…...

# 实时人脸性别与年龄识别:基于OpenCV与深度学习模型的实现

实时人脸性别与年龄识别&#xff1a;基于OpenCV与深度学习模型的实现 在当今数字化时代&#xff0c;计算机视觉技术正以前所未有的速度改变着我们的生活与工作方式。其中&#xff0c;人脸检测与分析作为计算机视觉领域的重要分支&#xff0c;已广泛应用于安防监控、智能交互、…...

x-cmd install | Slumber - 告别繁琐,拥抱高效的终端 HTTP 客户端

目录 核心优势&#xff0c;一览无遗安装应用场景&#xff0c;无限可能示例告别 GUI&#xff0c;拥抱终端 还在为调试 API 接口&#xff0c;发送 HTTP 请求而苦恼吗&#xff1f;还在各种 GUI 工具之间切换&#xff0c;只为了发送一个简单的请求吗&#xff1f;现在&#xff0c;有…...

apijson 快速上手

apijson是强大的工具&#xff0c;简化了CRUD的操作&#xff0c;只要有数据库表&#xff0c;就能自动生成RESTFUL接口。但初次上手也是摸索了很长时间&#xff0c;尤其是部署与使用上&#xff0c;这里尝试以初学者角度来说下&#xff1a; 一、好处 1、对于简单的应用&#xff…...

3D激光轮廓仪知识整理

文章目录 1.原理和应用场景1.1 相机原理1.1.1 测量原理1.1.2 相机激光器1.1.3 沙姆镜头1.1.4 相机标定1.1.5 中心线提取 1.2 应用场景1.2.1 测量相关应用1.2.2 缺陷检测相关应用 2.相机参数介绍及选型介绍2.1 成像原理2.2 原始图成像2.3 生成轮廓图2.4 相机规格参数2.4.1 单轮廓…...

Stable Diffusion+Pyqt5: 实现图像生成与管理界面(带保存 + 历史记录 + 删除功能)——我的实验记录(结尾附系统效果图)

目录 &#x1f9e0; 前言 &#x1f9fe; 我的需求 &#x1f527; 实现过程&#xff08;按功能一步步来&#xff09; &#x1f6b6;‍♂️ Step 1&#xff1a;基本图像生成界面 &#x1f5c3;️ Step 2&#xff1a;保存图片并显示历史记录 &#x1f4cf; Step 3&#xff1a…...

使用WasmEdge将InternLM集成到Obsidian,打造本地智能笔记助手

本文来自社区投稿&#xff0c;作者Miley Fu&#xff0c;WasmEdge Runtime 创始成员。 本文将介绍如何通过 WasmEdge 将书生浦语&#xff08;InternLM&#xff09;大模型部署在本地&#xff0c;并与 Obsidian 笔记软件集成&#xff0c;从而在笔记软件中直接利用大模型实现文本总…...

深入理解Softmax函数及其在PyTorch中的实现

Softmax函数简介 Softmax函数在机器学习和深度学习中&#xff0c;被广泛用于多分类问题的输出层。它将一个实数向量转换为概率分布&#xff0c;使得每个元素介于0和1之间&#xff0c;且所有元素之和为1。 Softmax函数的定义 给定一个长度为 K K K的输入向量 z [ z 1 , z 2 …...

JGraphT 在 Spring Boot 中的应用实践

1. 引言 1.1 什么是 JGraphT JGraphT 是一个用于处理图数据结构和算法的 Java 库,提供了丰富的图类型和算法实现。 1.2 为什么使用 JGraphT 丰富的图类型:支持简单图、多重图、伪图等多种图类型。强大的算法库:提供最短路径、最小生成树、拓扑排序等多种算法。易于集成:…...

java导入excel更新设备经纬度度数或者度分秒

文章目录 一、背景介绍二、页面效果三、代码0.pom.xml1.ImportDevice.vue2.ImportDeviceError.vue3.system.js4.DeviceManageControl5.DeviceManageUserControl6.Repeater7.FileUtils8.ResponseModel9.EnumLongitudeLatitude10.词条 四、注意点本人其他相关文章链接 一、背景介…...

视频设备轨迹回放平台EasyCVR远程监控体系落地筑牢国土监管防线

一、背景概述 我国土地资源遭违法滥用的现象愈发严峻&#xff0c;各类土地不合理利用问题频发。不当的土地开发不仅加剧了地质危害风险&#xff0c;导致良田受损、森林资源的滥伐&#xff0c;还引发了煤矿无序开采、城市开发区违建等乱象&#xff0c;给国家宝贵的土地资源造成…...

tree-sitter 的 grammar.js 编写方法

tree-sitter 的 grammar.js 编写方法 一、grammar.js 的作用是什么&#xff1f;二、基本结构三、关键词解释四、编写小技巧1. 起点是 source_file2. 所有规则名&#xff08;如 identifier, number&#xff09;都是 $ > ...3. 正则表达式用于定义词法规则&#xff08;终结符&…...

Git 实践笔记

这里写自定义目录标题 一、将当前改动追加到某次commit上二、git 强制修改分支位置 一、将当前改动追加到某次commit上 stash工作区中的当前改动 git stash假设需要修改的commit是 f744c32&#xff0c;将HEAD移动到需要改动的commit的父提交上 git rebase f744c32^ --interact…...

【特权FPGA】之数码管

case语句的用法&#xff1a; 计数器不断的计数&#xff0c;每一个num对应数码管一种数据的输出。实例通俗易懂&#xff0c;一目了然。 timescale 1ns / 1ps// Company: // Engineer: // // Create Date: // Design Name: // Module Name: // Project Name: //…...

Stable Diffusion 四重调参优化——项目学习记录

学习记录还原&#xff1a;在本次实验中&#xff0c;我基于 Stable Diffusion v1.5模型&#xff0c;通过一系列优化方法提升生成图像的质量&#xff0c;最终实现了图像质量的显著提升。实验从基础的 Img2Img 技术入手&#xff0c;逐步推进到参数微调、DreamShaper 模型和 Contro…...

遇到git提交报错:413

是因为提交文件过大导致内存溢出。 解决方法&#xff1a; 假设您的提交历史如下&#xff1a; Apply to .gitignore abcd123 当前提交 efgh456 包含node_modules的提交 ijkl789 较早的正常提交 您可以&#xff1a; 回退到添加node_modules之前的提交&#xff1a; bash App…...

关于nacos注册的服务的ip异常导致网关路由失败的问题

文章目录 关于nacos注册的服务的ip异常导致网关路由失败的问题相关处理方案为方案一:手动指定服务注册的 IP 地址方法二&#xff1a;设置优先使用的网络段方法三&#xff1a;指定网络接口方法四&#xff1a;忽略特定的网卡 备注 关于nacos注册的服务的ip异常导致网关路由失败的…...

大模型在初治CLL成人患者诊疗全流程风险预测与方案制定中的应用研究

目录 一、绪论 1.1 研究背景与意义 1.2 国内外研究现状 1.3 研究目的与内容 二、大模型技术与慢性淋巴细胞白血病相关知识 2.1 大模型技术原理与特点 2.2 慢性淋巴细胞白血病的病理生理与诊疗现状 三、术前风险预测与手术方案制定 3.1 术前数据收集与预处理 3.2 大模…...

【C++游戏引擎开发】第9篇:数学计算库GLM(线性代数)、CGAL(几何计算)的安装与使用指南

写在前面 两天都没手搓实现可用的凸包生成算法相关的代码&#xff0c;自觉无法手搓相关数学库&#xff0c;遂改为使用成熟数学库。 一、GLM库安装与介绍 1.1 vcpkg安装GLM 跨平台C包管理利器vcpkg完全指南 在PowerShell中执行命令&#xff1a; vcpkg install glm# 集成到系…...

408 计算机网络 知识点记忆(8)

前言 本文基于王道考研课程与湖科大计算机网络课程教学内容&#xff0c;系统梳理核心知识记忆点和框架&#xff0c;既为个人复习沉淀思考&#xff0c;亦希望能与同行者互助共进。&#xff08;PS&#xff1a;后续将持续迭代优化细节&#xff09; 往期内容 408 计算机网络 知识…...

基于Python脚本实现Flink on YARN任务批量触发Savepoint的实践指南

基于Python脚本实现Flink on YARN任务批量触发Savepoint的实践指南 一、背景与价值 在流计算生产环境中&#xff0c;Flink on YARN的部署方式凭借其资源管理优势被广泛采用。Savepoint作为Flink任务状态的一致性快照&#xff0c;承载着故障恢复、版本升级、作业暂停等重要场景…...