Nginx基本使用 反向代理与负载均衡

什么是Nginx

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器。

其特点是占有内存少,并发能力强,nginx的并发能力在同类型的网页服务器中表现较好,而且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。

Nginx作用

  • 反向代理:为服务器做代理,接收客户端的的请求,并将服务器的响应转发给客户端
  • 负载均衡:将负载合理地分配到各个服务器去处理
  • 动静分离:将网站的动态与静态资源分开(如前后端分离),可以对静态文件做缓存,提高响应速度

使用场景:

  • 一个项目存在于多台服务器,想要实现每一次用户请求都打在不同的服务器上,但又不想让用户感知到访问的是不同服务器

正向/反向代理

正向代理是指客户端通过代理服务器(如VPN)去接收和响应目标服务器的请求,代理的是客户端。用户对国外网站的访问就需要通过代理服务器来转发请求。

在这里插入图片描述

而反向代理就是服务器通过一个代理服务器去接受和返回客户端的请求,因为代理在是服务器端,所以叫反向代理。对于客户端来说,反向代理就相当于目标服务器,只需要将反向代理当作目标服务器一样发送请求就可以了。

在这里插入图片描述

总结:正向代理是代理客户端,为客户端收发请求,使真实客户端对服务器不可见;而反向代理是代理服务器,为服务器收发请求,使真实服务器对客户端不可见。

负载均衡

负载就是工作量(或者流量),将总的流量按照一定策略分配到各个主机上去的过程就是负载均衡。

反向代理实现的是:你访问一台服务器,它会转发给一台别的服务器;而负载均衡实现的是,你访问一台服务器,它会转发给多个服务器

中的一台,所以说负载均衡是基于反向代理的,只不过代理的是一群服务器。

在这里插入图片描述

动静分离

动静分离就是将前端的静态资源(html、css、JavaScript、图片等)与后端分开,或者说静态请求与动态请求分开,也就是实现前后端分离。

本质上就是以Nginx作为前端资源的服务器,后端正常用Tomcat作为服务器。访问前端静态资源时,直接通过Nginx所在服务器的文件系统找,访问后端动态资源时,才是通过tomcat所在服务器对应的接口去访问。

在这里插入图片描述

Nginx基本使用

启动

打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe ,回车

在这里插入图片描述

直接在浏览器地址栏输入网址 http://localhost:80 回车,出现以下页面说明启动成功!

在这里插入图片描述

重载配置

nginx -t # 检查配置文件语法
nginx -s reload # 重新加载

关闭

输入nginx命令 nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)

Nginx配置

在conf文件夹中的nginx.conf是nginx的核心配置文件

注意:修改配置文件后不会立即生效,必须执行nginx -s reload才会生效

在这里插入图片描述

里面主要包括三块,分别是全局配置、事件配置和http配置,可以看到默认配置的nginx监听的端口为80

# 全局配置
#user  nobody;
worker_processes  1;# 事件配置
events {worker_connections  1024;
}# http配置
http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;# sever配置server {listen       80;server_name  localhost;location / {root   html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}server {...}}

Nginx实践

有一个应用,在两个不同的服务器中运行(或者同一台服务器不同端口),先要求使用Niginx做反向代理,使得用户访问本机的80端口时会自动映射到对应的两个主机应用上(反向代理),并且配置主机1的访问频率是主机2的两倍(负载均衡)。

步骤

分别用7090和7091号端口启动一个hello world的应用,访问这里两个url的结果都是得到一个hello world

在这里插入图片描述

1.在http配置内加入myhost的配置

    # 配置myhost,负载均衡(默认是轮询策略)upstream myhost{server 127.0.0.1:7090 weight=2;server 127.0.0.1:7091 weight=1;}

2.再在80端口的sever中配置反向代理(代理上述定义的myhost),只需要添加一行proxy_pass即可

 # sever配置server {listen       80;server_name  localhost;location / {#配置反向代理,转到myhostproxy_pass http://myhost;}}

具体修改如下

在这里插入图片描述

cmd中进入nginx目录,输入nginx -s reload,重新加载配置文件

结果

此时,访问127.0.0.1或者localhost(默认是80端口),就会自动转到127.0.0.1:7090和127.0.0.1:7091了(实现反向代理),且访问两个程序的比例是1:2(实现负载均衡)

在这里插入图片描述

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

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

相关文章

MP2110A Anritsu 安立 采样示波器 眼图设备 简述

MP2110A是一款集成了误码率测试仪(BERT)和采样示波器的一体化测量仪器,主要用于光学模块的误码率(BER)测量、眼图分析等评估操作。它支持从10G到800G的光学模块制造过程中的检测分91522。MP2110A内置4通道采样示波器&a…

k8s部署jupyterlab,jupyterlab保存不了文件,如何解决?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

ElasticSearch:查询操作合集

先看下我的数据: 1、查询所有文档: GET /cartest/_search或者 GET /cartest/_search {"query": {"match_all": {}} }2、匹配查询: match匹配类型查询,会把查询条件进行分词,然后进行查询&…

【树莓派】如何用电脑连接树莓派的远程桌面,灰屏解决

要使用VNC桌面连接到树莓派,你需要确保已经安装并启动了VNC服务器。以下是连接到树莓派的步骤: 在树莓派上启动VNC服务器: 打开终端或SSH连接到你的树莓派。输入以下命令以安装RealVNC的VNC服务器:sudo apt update sudo apt insta…

PLSQL数据库

目录 什么是PLSQL数据库 PL数据库的实现方法 PL数据库的基本语法 1.作用 2.语法 3.赋值输出 4.引用 5.异常处理 6.if 判断 7.loop循环 8.while循环 9.for循环 10.游标 11.参数游标 12.索引 13.分区表 什么是PLSQL数据库 PL/SQL(Procedure Language/…

【C++航海王:追寻罗杰的编程之路】C++11(二)

目录 C11(上) 1 -> STL中的一些变化 2 -> 右值引用和移动语义 2.1 -> 左值引用和右值引用 2.2 -> 左值引用与右值引用比较 2.3 -> 右值引用使用场景与意义 2.4 -> 右值引用引用左值及其更深入的使用场景分析 2.5 -> 完美转发 C11(上) 1 -> STL…

为什么要建设数字化校园?

数字化校园的建设能够使用户能够随时随地的在有互联网的地方获取到校园的信息,而且由于这些信息都是有校园的管理部门发布的,所以这样就能保证信息的权威性。数字化校园平台还能让学校内部建立起相对独立的网络体系,能有效的消除“信息化孤岛…

Kubernetes TDengine 系列|安装 TDengine 的 Grafana 插件|Grafana监控TDengine数据

为了让Grafana 能够监控到TDengine 数据,快速集成搭建数据监测报警系统,所以直接安装TDengine 插件。 目录 一、安装 TDengine 的 Grafana 插件1、下载TDengine grafana插件2、解压到指定目录3、配置未签名插件 二、配置数据源,简单查询TDen…

【已解决】VMware虚拟机中出现无法将“iso文件”当做CD-ROM映像进行连接:找不到该文件的错误

报错 在VMware上运行虚拟机时报错:VMware虚拟机中出现无法将“iso文件”当做CD-ROM映像进行连接:找不到该文件的错误 原因分析 找不到这个iso文件了,检查文件位置 解决方案 找到iso文件,然后在VM中编辑虚拟机中这个文件的位置…

AI-数学-高中-45函数单调性与导数

原作者视频:【导数】【一数辞典】5函数单调性与导数(重要)_哔哩哔哩_bilibili 导数最重要作用:判断函数单调性。 示例:

新风口下的必应bing国内广告投放该怎么做?

必应Bing作为全球搜索引擎市场的重要参与者,正逐渐显现出其在国内市场的独特价值和潜力。随着互联网生态的多元化发展,必应Bing凭借其高质量用户群和精准投放能力,成为了企业寻求新增长点的新风口。 一、洞察先机,精准定位市场 …

运营版游戏陪玩平台源码/tt语音聊天/声优服务/陪玩系统源码开黑/约玩源码

简述 一个人的游戏叫孤独,一群人的游戏才是乐趣,随着电竞产业在国内的快速发展,游戏陪练行业也迅速成长,现在很多游戏玩家为了追求更高质量的游戏体验感,往往会在玩游戏的过程中找陪练,通过陪玩系统进行预…

常用的JDK9-JDK17的一些新增语法特性

目录 1.前言2.一些新增的特性2.1 yield关键字2.2 var关键字2.3 空指针异常2.4 密封类2.5 接口中的私有方法2.6 instanceof2.7 其他 1.前言 从springboot3.0开始,已经不⽀持JDK8了。参考资料 :Spring官方博客。从3.0开始,转变为JDK17。 官方…

Node+Vue3+mysql+ant design实现前后端分离——表格的添加、修改和删除

在上一篇文章中,我们分享了如何运用NodeJS、Vue、MySQL以及其他技术来实现后台管理系统中的表格查询功能。今天,我们将继续探讨另外三个重要的功能实现原则。这些原则在构建后台管理系统时至关重要,同时还有导入和导出这两种功能也必不可少。关于导入和导出功能,我们会在下…

CUDA的开发框架

CUDA的开发框架主要提供了一系列工具和库,使得开发者可以充分利用NVIDIA GPU进行高效的并行计算。以下是CUDA开发框架的一些关键组成部分。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.CUDA核心库:这些是构…

C++设计模式:中介者模式(十五)

1、定义与动机 定义:用一个中介对象来封装(封装变化)一系列的对象交互。中介者使各个对象不需要显示的相互引用(编译时依赖 -> 运行时依赖),从而使其耦合松散(管理变化)&#xff…

vue3+node.js+mysql+ant design实现表格的查询功能

今日主要分享如何运用vue、nodejs、mysql及ant design构建表格数据查询功能,这也是众多项目开发者关注的问题。最关键在于前端与后端的协作,后端数据则通过nodejs编写。尽管涉及多项技术,看似复杂,但实际操作却并非困难。当然&…

LM324的输出VOL与IOL你注意过吗?

电路图 途中LMC6084 更改为LM324 故障现象 这个电路的输入输出表达式为 R30 两端电压等于0V 当J16 的4脚与2脚相等,等于5V(或者4脚略大于2脚时)7脚输出 约 500mV; 实际应该为0V左右才对.见下图 故障原因 上图运放输出低电平…

【ENSP】VRRP配置方法

VRRP配置步骤 1.配置虚拟ip地址作为网关,进行切换路由器 2.配置vrrp优先级,越大越优先 3.配置延迟抢占时间 4.配置备份组监视接口 AR1路由器配置 u t m #关闭提示 sys …

创建Maven项目的时候让选择maven模板

创建Maven项目的时候让选择maven模板 心得 工欲利其事 必先利其器。如果你想要干成一件事 那么必须先要精通对应的工具使用。之前我不太注重工具 我觉得只要代码写的好就可以了 但是当我们了解了产品经理的一些思想之后,我才明白一个好的产品是可以给用户提供多大…