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:端口;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/901490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【字节跳动AI论文】Seaweed-7B:视频生成基础模型的高成本效益培训

摘要&#xff1a;本技术报告介绍了一种经济有效的视频生成基础模型训练策略。 我们提出了一种中等规模的研究模型&#xff0c;大约有70亿个参数&#xff08;7B&#xff09;&#xff0c;称为Seaweed-7B&#xff0c;使用665,000个H100 GPU小时从头开始训练。 尽管使用适度的计算资…

Java单例模式:实现全局唯一对象的艺术

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、什么是单例模式&#xff1f; 单例模式&#xff08;Singleton Pattern&#xff09;是一种创建型设计模式&#xff0c;确保一个类只有一个实例&#xff0c…

Oracle 复制表结构(含索引、主键)操作指南

Oracle 复制表结构&#xff08;含索引、主键&#xff09;操作指南 1. 复制基础表结构 -- 创建空表结构&#xff08;不复制数据&#xff09; CREATE TABLE new_table AS SELECT * FROM old_table WHERE 10;2. 复制主键约束 -- 查询原表主键信息 SELECT constraint_name, co…

React 更新state中的对象

更新 state 中的对象 state 中可以保存任意类型的 JavaScript 值&#xff0c;包括对象。但是&#xff0c;你不应该直接修改存放在 React state 中的对象。相反&#xff0c;当你想要更新一个对象时&#xff0c;你需要创建一个新的对象&#xff08;或者将其拷贝一份&#xff09;…

基于 GoFrame 框架的电子邮件发送实践:优势、特色与经验分享

1. 引言 如果你是一位有1-2年Go开发经验的后端开发者&#xff0c;可能已经熟悉了Go语言在性能和并发上的天然优势&#xff0c;也曾在项目中遇到过邮件发送的需求——无论是用户注册时的激活邮件、系统异常时的通知&#xff0c;还是营销活动中的批量促销邮件&#xff0c;邮件功…

AndroidStudio编译报错 Duplicate class kotlin

具体的编译报错信息如下&#xff1a; Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and kotlin-stdlib-jdk8-1.6.21 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21) D…

后端面试问题收集以及答案精简版

思路 不要问什么答什么 要学会扩充 比如问你go map的原理 map 是什么 数据结构&#xff0c;字典&#xff0c;k/v 结构map的应用场景有哪些 快速查找、计数器、配置管理、去重、缓存实现map有哪些限制 无序性、非线程安全的读写map的key的访问 v: mp[key] v,ok : mp[key] for…

MicroPython 开发ESP32应用教程 之 I2S、INMP441音频录制、MAX98357A音频播放、SD卡读写

本课程我们讲解Micropython for ESP32 的i2s及其应用&#xff0c;比如INMP441音频录制、MAX98357A音频播放等&#xff0c;还有SD卡的读写。 一、硬件准备 1、支持micropython的ESP32S3开发板 2、INMP441数字全向麦克风模块 3、MAX98357A音频播放模块 4、SD卡模块 5、面包板及…

UE5 物理模拟 与 触发检测

文章目录 碰撞条件开启模拟关闭模拟 多层级的MeshUE的BUG 触发触发条件 碰撞 条件 1必须有网格体组件 2网格体组件必须有网格&#xff0c;没有网格虽然可以开启物理模拟&#xff0c;但是不会有任何效果 注意开启的模拟的网格体组件会计算自己和所有子网格的mesh范围 3只有网格…

微信小程序 - swiper轮播图

官方文档&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/component/swiper.html <swiper indicator-color"ivory" indicator-active-color"#d43c33" indicator-dots autoplay><swiper-item><image src"/images/banner…

深入探究C#官方MCP:开启AI集成新时代

一、引言 在当今数字化时代&#xff0c;.NET 开发领域不断演进&#xff0c;而 C# 官方 MCP&#xff08;Model Context Protocol&#xff0c;模型上下文协议&#xff09;的出现&#xff0c;无疑为开发者们带来了全新的机遇与挑战。随着人工智能技术的迅猛发展&#xff0c;将 AI…

二分查找法

使用二分查找法的前提&#xff1a;&#xff08;1&#xff09;数组为有序数组. &#xff08;2&#xff09;数组中无重复元素. 二分的两种写法&#xff1a; 方法一&#xff1a;[left&#xff0c;right] class Solution { public:int search(vector<int>& nums, int …

HarmonyOS:页面滚动时标题悬浮、背景渐变

一、需求场景 进入到app首页或者分页列表首页时&#xff0c;随着页面滚动&#xff0c;分类tab要求固定悬浮在顶部。进入到app首页、者分页列表首页、商品详情页时&#xff0c;页面滚动时&#xff0c;顶部导航栏&#xff08;菜单、标题&#xff09;背景渐变。 二、相关技术知识点…

鲲鹏+昇腾部署集群管理软件GPUStack,两台服务器搭建双节点集群【实战详细踩坑篇】

前期说明 配置&#xff1a;2台鲲鹏32C2 2Atlas300I duo&#xff0c;之前看网上文档&#xff0c;目前GPUstack只支持910B芯片&#xff0c;想尝试一下能不能310P也部署试试&#xff0c;毕竟华为的集群软件要收费。 系统&#xff1a;openEuler22.03-LTS 驱动&#xff1a;24.1.rc…

React中 点击事件写法 的注意(this、箭头函数)

目录 ‌1、错误写法‌&#xff1a;onClick{this.acceptAlls()} ‌2、正确写法‌&#xff1a;onClick{this.acceptAlls}&#xff08;不带括号&#xff09; 总结 方案1&#xff1a;构造函数绑定 方案2&#xff1a;箭头函数包装方法&#xff08;更简洁&#xff09; 方案3&am…

【路由交换方向IE认证】BGP选路原则之Weight属性

文章目录 一、路由器BGP路由的处理过程控制平面和转发平面选路工具 二、BGP的选路顺序选路的前提选路顺序 三、Wight属性选路原则规则9与规则11的潜移默化使用Weight值进行选路直接更改Weight值进行选路配合使用route-map进行选路 四、BGP邻居建立配置 一、路由器BGP路由的处理…

Missashe考研日记-day20

Missashe考研日记-day20 1 高数 学习时间&#xff1a;2h30min学习内容&#xff1a; 今天当然是刷题啦&#xff0c;做不等式的证明板块的真题&#xff0c;证明题懂的都懂&#xff0c;难起来是真的一点思路都没有&#xff0c;这个板块还没做完&#xff0c;做完再总结题型。 2…

了解JVM

一.JVM概述 1.JVM的作用 把字节码编译为机器码去执行,负责把字节码装载到虚拟机中 现在的 JVM 不仅可以执行 java 字节码文件,还可以执行其他语言编译后的字节码文件,是一个跨语言平台 2.JVM的组成部分 类加载器&#xff08;ClassLoader&#xff09;运行时数据区&#x…

LeetCode LCR157 套餐内商品的排列顺序

生成字符串的全部排列&#xff08;去重&#xff09;&#xff1a;从问题到解决方案的完整解析 问题背景 在编程和算法设计中&#xff0c;生成字符串的所有排列是一个经典问题。它不仅出现在算法竞赛中&#xff0c;也在实际开发中有着广泛的应用&#xff0c;比如生成所有可能的…

pgsql:关联查询union(并集)、except(差集)、intersect(交集)

pgsql:关联查询union(并集)、except(差集)、intersect(交集)_pgsql except-CSDN博客