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

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

Nginx在linux上部署静态资源

在这里插入图片描述

概念介绍

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

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

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

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

编写一个DemoNginx.html文件,将这个文件部署到nginx中,然后通过nginx访问html静态资源。在这里插入图片描述

编写的html文件

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

1、将静态资源复制到 nginx安装目录的html目录中(此目录被我挂载到了宿主机的web目录上)
在这里插入图片描述
2. 更新配置文件
在这里插入图片描述


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

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

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

相关文章:

  • 【基于LangChain的千问大模型工具调用】 Function CallingTool Calling简易示例
  • SCS翠鸟认证是什么,SCS翠鸟认证的意义?对企业发展好处
  • NO.88十六届蓝桥杯备战|动态规划-多重背包|摆花(C++)
  • SpringBoot 基础知识,HTTP 概述
  • 从递归入手一维动态规划
  • Java的内存模型
  • 高等数学同步测试卷 同济7版 试卷部分 上 做题记录 第二章导数与微分同步测试卷A卷
  • Java Lambda与方法引用:函数式编程的颠覆性实践
  • Soybean Admin 配置vite兼容低版本浏览器、安卓电视浏览器(飞视浏览器)
  • “pip“ is not recognized(pip无法被识别)
  • VBA即用型代码手册:书签Bookmarks
  • ARCGIS PRO 在已建工程地图中添加在线地图
  • Soybean Admin移除git-hooks永久关闭git校验
  • 【算法】——一键解决动态规划
  • spdlog高速日志系统
  • recyclerview嵌套,实现水平方向联合滑动
  • 音频转文本:如何识别音频成文字
  • Maven超级详细安装部署
  • 第十四届蓝桥杯大赛软件赛国赛Python大学B组题解
  • 在 Q3D 中提取汇流条电感