探究Nginx应用场景

1 静态资源

Nginx是一个流行的Web服务器和反向代理服务器,它可以用于托管静态资源。下面是一个简单的案例,展示了如何使用Nginx来提供静态资源。

假设你有一个名为example.com的域名,并且你希望使用Nginx来托管位于/var/www/html目录下的静态资源。

  1. 配置静态资源路径:在Nginx中,可以使用root指令来指定静态资源的根目录。打开Nginx的配置文件,通常位于/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf,并添加以下配置:
server {  listen 80;  server_name example.com;  location / {  root /var/www/html;  index index.html index.htm;  }  
}
  1. 在上面的配置中,server_name指令指定了域名,location /指令指定了URL路径匹配规则,root指令指定了静态资源的根目录。
  2. 重启Nginx:保存并关闭配置文件后,重启Nginx以使更改生效。使用以下命令重启Nginx:
  3. 上传静态资源:将你的静态资源文件放置在/var/www/html目录中。例如,你可以创建一个名为index.html的文件,并将其放在该目录下。
  4. 访问静态资源:现在,你可以通过在浏览器中访问http://example.com来访问你的静态资源。如果一切正常,你应该能够看到你在/var/www/html目录中放置的静态资源。

这是一个简单的使用Nginx提供静态资源的案例。你可以根据需要进行更多的配置,例如添加SSL证书、压缩资源、缓存控制等。请参考Nginx的官方文档以获取更多详细信息。

2 反向代理

Nginx是一个流行的Web服务器和反向代理服务器,它可以用于构建高性能的Web应用程序。下面是一个简单的案例,展示了如何使用Nginx作为反向代理服务器。

假设你有一个名为backend的应用程序服务器,它监听在端口8080上,并且你希望使用Nginx作为反向代理来转发客户端请求到该服务器。

  1. 配置反向代理:在Nginx中,可以使用proxy_pass指令来指定反向代理的目标服务器。打开Nginx的配置文件,通常位于/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf,并添加以下配置:
    在这里插入图片描述
    在上面的配置中,server_name指令指定了域名,location /指令指定了URL路径匹配规则,proxy_pass指令指定了反向代理的目标服务器地址。proxy_set_header指令用于设置请求头信息,以便后端服务器能够正确识别客户端的请求。

  2. 重启Nginx:保存并关闭配置文件后,重启Nginx以使更改生效。

  3. 配置后端服务器:将你的应用程序服务器配置为监听在端口8080上。例如,如果你使用的是Node.js应用程序,你可以使用以下代码创建一个简单的服务器:
    在这里插入图片描述

  4. 访问应用程序:现在,你可以通过在浏览器中访问http://example.com来访问你的应用程序。如果一切正常,你应该能够看到来自后端服务器的响应。

这是一个简单的使用Nginx作为反向代理的案例。你可以根据需要进行更多的配置,例如添加SSL证书、负载均衡、缓存控制等。请参考Nginx的官方文档以获取更多详细信息。

3 动静分离

Nginx是一个流行的Web服务器和反向代理服务器,它可以用于实现动静分离,提高Web应用程序的性能。下面是一个简单的案例,展示了如何使用Nginx实现动静分离。

假设你有一个静态资源目录/var/www/html,该目录下存放着一些HTML、CSS、JavaScript等静态文件,并且你希望使用Nginx来处理这些静态文件的请求,同时将动态请求转发给后端的应用程序服务器。

  1. 配置动静分离:在Nginx中,可以使用location指令来匹配不同的URL路径,并指定相应的处理方式。打开Nginx的配置文件,通常位于/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf,并添加以下配置:
    在这里插入图片描述
    在上面的配置中,server_name指令指定了域名,location /指令指定了URL路径匹配规则,root指令指定了静态资源的根目录。location /api指令匹配以/api开头的URL路径,并将请求转发给本地端口8080上的应用程序服务器。proxy_pass指令指定了反向代理的目标服务器地址。proxy_set_header指令用于设置请求头信息,以便后端服务器能够正确识别客户端的请求。
  2. 重启Nginx:保存并关闭配置文件后,重启Nginx以使更改生效。
  3. 配置后端服务器:将你的应用程序服务器配置为监听在端口8080上。例如,如果你使用的是Node.js应用程序,你可以使用以下代码创建一个简单的服务器:
    在这里插入图片描述
  4. 访问应用程序:现在,你可以通过在浏览器中访问http://example.com来访问你的应用程序。如果一切正常,你应该能够看到来自静态资源目录的HTML文件,并且当你访问以/api开头的URL路径时,请求将被转发到后端的应用程序服务器。

这是一个简单的使用Nginx实现动静分离的案例。你可以根据需要进行更多的配置,例如添加SSL证书、负载均衡、缓存控制等。请参考Nginx的官方文档以获取更多详细信息。

4 一个nginx机器、一个服务器集群的配置案例

以下是一个使用Nginx作为反向代理服务器的集群配置案例:

案例概述:

  • 一个Nginx机器作为反向代理服务器,负责接收客户端请求并转发到后端服务器集群。
  • 一个服务器集群,包含多个应用服务器,提供实际的业务处理能力。

配置步骤:

1、配置Nginx机器:

  • 安装Nginx:在Nginx机器上安装Nginx软件。
  • 配置反向代理:编辑Nginx的配置文件(通常是nginx.conf),添加反向代理配置。示例配置如下:
http {  upstream backend {  server backend1.example.com;  server backend2.example.com;  server backend3.example.com;  }  server {  listen 80;  server_name example.com;  location / {  proxy_pass http://backend;  proxy_set_header Host $host;  proxy_set_header X-Real-IP $remote_addr;  }  }  
}

在上面的配置中,upstream块定义了一个名为backend的上游服务器组,其中列出了后端服务器的地址。server块定义了Nginx监听的端口和域名,location块指定了将请求代理到哪个上游服务器组。

  • 保存配置文件并重启Nginx:保存配置文件后,重启Nginx服务以使更改生效。
  1. 配置服务器集群:
  • 安装应用服务器软件:在每个应用服务器上安装所需的业务处理软件。
  • 配置业务处理:根据具体的业务需求,配置应用服务器的业务处理能力。
  • 配置网络:确保应用服务器可以被Nginx机器正确访问,并且没有网络故障。

完成上述配置后,客户端发送请求到example.com时,Nginx机器会将请求转发到后端服务器集群中的某个应用服务器进行处理,并将响应返回给客户端。通过Nginx的反向代理功能,可以实现负载均衡、故障转移等功能,提高系统的可用性和性能。

5 Nginx负载均衡策略-指定轮询几率

在Nginx中,可以使用weight参数来指定轮询几率。weight参数用于定义每个后端服务器的权重,权重越高的服务器将会收到更多的请求。下面是一个指定轮询几率的案例:

http {  upstream backend {  server backend1.example.com weight=2;  server backend2.example.com weight=3;  server backend3.example.com weight=5;  }  server {  listen 80;  server_name example.com;  location / {  proxy_pass http://backend;  proxy_set_header Host $host;  proxy_set_header X-Real-IP $remote_addr;  }  }  
}

在上面的配置中,我们定义了一个名为backend的上游服务器组,其中包含了三个后端服务器,并分别指定了它们的权重。backend1.example.com的权重为2,backend2.example.com的权重为3,backend3.example.com的权重为5。

当Nginx接收到请求时,它会根据权重值的大小进行轮询。在这个例子中,backend3.example.com的权重最高,因此它将收到最多的请求,其次是backend2.example.com,最后是backend1.example.com。

通过这种方式,您可以根据服务器的性能、负载或其他因素来调整每个服务器的轮询几率,从而实现更灵活的负载均衡策略。

6 Nginx负载均衡策略-ip_hash

在Nginx中,可以使用ip_hash指令来实现基于客户端IP地址的哈希负载均衡。ip_hash指令将根据客户端的IP地址将请求哈希到不同的后端服务器。下面是一个ip_hash负载均衡策略的案例:

http {  upstream backend {  ip_hash;  server backend1.example.com;  server backend2.example.com;  server backend3.example.com;  }  server {  listen 80;  server_name example.com;  location / {  proxy_pass http://backend;  proxy_set_header Host $host;  proxy_set_header X-Real-IP $remote_addr;  }  }  
}

在上面的配置中,我们定义了一个名为backend的上游服务器组,并在该组中应用了ip_hash指令。这意味着Nginx将使用客户端的IP地址作为哈希键,将请求分配到不同的后端服务器。

使用ip_hash负载均衡策略可以确保来自同一客户端的请求始终被发送到同一台后端服务器,这对于保持会话状态或避免重复登录非常有用。然而,需要注意的是,ip_hash指令仅根据客户端的IP地址进行哈希,如果客户端使用代理服务器,则可能导致负载分配不均。

每个请求按访问ip的hash值分配,这样同一客户端连续的Web请求都会被分发到同一服务器进行处理,可以解决session的问题。当后台服务器宕机时,会自动跳转到其它服务器。

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

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

相关文章

CopyOnWriteArrayList源码分析

其中唯一的线程安全 List 实现就是 CopyOnWriteArrayList。 特点 由于读取操作不会对原有数据进行修改,因此,对于每次读取都进行加锁其实是一种资源浪费。相比之下,我们应该允许多个线程同时访问 List 的内部数据,毕竟对于读取操…

MeterSphere压测,出现HttpHostConnectException

现象:MeterSphere更换压力机后,压测出现出现HttpHostConnectException 解决方案: net.ipv4.tcp_tw_reuse默认是0或者2,更改为1 net.ipv4.tcp_tw_reuse,表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连…

时序分解 | MATLAB实现基于SSA奇异谱分析的信号分解分量可视化

时序分解 | MATLAB实现基于LMD局部均值分解的信号分解分量可视化 目录 时序分解 | MATLAB实现基于LMD局部均值分解的信号分解分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 奇异谱分解奇异谱分析SSA 可直接替换txt数据运行 Matlab 1.包含3D分解效果图 频谱图等…

Linux UDP编程流程

文章目录 UDP编程流程UDP协议无连接的特点UDP协议数据报的特点 UDP编程流程 UDP 提供的是无连接、不可靠的、数据报服务。服务器端和客户端没有什么本质上的区别。编程流程如下: socket()用来创建套接字,使用 udp 协议时,选择数据报服务 SOC…

Spring基础(2w字---学习总结版)

目录 一、Spirng概括 1、什么是Spring 2、什么是容器 3、什么是IoC 4、模拟实现IoC 4.1、传统的对象创建开发 5、理解IoC容器 6、DI概括 二、创建Spring项目 1、创建spring项目 2、Bean对象 2.1、创建Bean对象 2.2、存储Bean对象(将Bean对象注册到容器…

IMU+摄像头实现无标记运动捕捉

惯性传感和计算机视觉的进步为在临床和自然环境中获得精准数据带来了新可能。然而在临床应用时需要仔细地将传感器与身体对齐,这减慢了数据收集过程。 随着无标记运动捕捉的发展,研究者们提出了一个新的深度学习模型,利用来自视觉、惯性传感…

金和OA GetSqlData.aspx 远程命令执行漏洞

一、漏洞简介 金和OA协同办公管理系统C6软件共有20多个应用模块,160多个应用子模块,涉及的企业管理业务包括协同办公管理、人力资源管理、项目管理、客户关系管理、企业目标管理、费用管理等多个业务范围,从功能型的协同办公平台上升到管理型协同管理平台,并不断的更新完善…

每日刷题-5

目录 一、选择题 二、算法题 1、不要二 2、把字符串转换成整数 一、选择题 1、 解析:printf(格式化串,参数1,参数2,.….),格式化串: printf第一个参数之后的参数要按照什么格式打印,比如%d--->按照整形方式打印&am…

2023备战秋招Java面试八股文合集

Java就业大环境仍然根基稳定,市场上有很多机会,技术好的人前景就好,就看你有多大本事了。小编得到了一份很不错的资源,建议大家可以认真地来看看以下的资料,来提升一下自己的核心竞争力,在面试中轻松应对面…

HTTPS协议

文章目录 HTTPS协议1. HTTPS协议介绍2. 概念准备2.1 什么是"加密"2.2 为什么要加密2.3 常见的加密方式(1) 对称加密(2) 非对称加密 2.4 数据摘要 && 数据指纹(1) 应用场景 3. HTTPS理解链3.1 方案 1 - 只使用对称加密3.2 方案 2 - 只使用非对称加密3.3 方案 …

SeaArt.ai: 海艺AI绘画艺术图片模型创作平台

【产品介绍】 • 名称 SeaArt.ai • 具体描述 SeaArt.ai是一个基于人工智能技术的AI绘画工具,它可以根据你的描述或者关键词来生成符合你想象的图片。你可以选择不同的模式来创建不同类型的图片,比如人物、风景、建筑、神话、自…

投稿指南【NO.12_8】【极易投中】核心期刊投稿(组合机床与自动化加工技术)

近期有不少同学咨询投稿期刊的问题,大部分院校的研究生都有发学术论文的要求,少部分要求高的甚至需要SCI或者多篇核心期刊论文才可以毕业,但是核心期刊要求论文质量高且审稿周期长,所以本博客梳理一些计算机特别是人工智能相关的期…

Swift 新并发模型中 isolated 和 nonisolated 关键字的含义看这篇就懂了!

概览 在 Swift 新 async/await 并发模型中,我们可以利用 Actor 来避免并发同步时的数据竞争,并从语义上简化代码。 Actor 伴随着两个独特关键字:isolated 和 nonisolated,弄懂它们的含义、合理合规的使用它们是完美实现同步的必…

SpringMVC文件的上传下载JRebel的使用

目录 前言 一、JRebel的使用 1.IDea内安装插件 2.激活 3.离线使用 使用JRebel的优势 二、文件上传与下载 1 .导入pom依赖 2.配置文件上传解析器 3.数据表 4.配置文件 5.前端jsp页面 6.controller层 7.测试结果 前言 当涉及到Web应用程序的开发时&…

只依赖OPENCV的工作服安全帽检测YOLOV8S

工地安全帽工作服检测Y8S,采用YOLOV8S训练模型,然后使用OPENCV的DNN调用,彻底拜托PYTORCH依赖,可以在C,PYTHON,ANDROID上跑。附件是C生成的效果测试(只需解压将图片或者视频放入VIDEOS文件夹,文件夹没图片或…

【UE 材质】制作飘动的旗帜

效果 步骤 1. 首先在建模软件中创建一个平面,注意分段数一定要多 2. 在UE中创建一个材质,这里命名为“Mat_Flag” 打开“Mat_Flag”,先将旗帜纹理连接到基础颜色 先选中导入的模型然后点击根据选中的模型预览材质 创建如下节点可以看到此时模…

如何让报表会说话?学会这一招就可以了

Smartbi电子表格软件进化到全新阶段,这轮更新最能吸引人的地方是什么呢?跟随小麦一起来感受下。 1、新增语音播放特性,让报表会说话 Smartbi电子表格软件最新上线超级实用的新特性——语音播报,即让报表自己开口说话~ 设想你打开…

matplotlib绘图

🐳 我正在和鲸社区参加“商业数据分析训练营活动” https://www.heywhale.com/home/competition/6487de6649463ee38dbaf58b ,以下是我的学习笔记: 学习主题:matplotlib绘图 日期:2023.9.13 关键概念/知识点&#xf…

TikTok的生态封闭:如何应对新的商业格局

TikTok(抖音国际版)已经成为全球范围内最受欢迎的社交媒体平台之一,拥有数以亿计的活跃用户。然而,最近TikTok宣布了一项重大战略调整,即开始构建生态封闭(walled garden)模式。 这一变化将对出…

bit、bin 、mcs文件区别

FPGA里面的可执行文件都涉及到 *.bit, *.mcs, *.bin 和 *.elf。 bit文件 bit 文件一般用于JTAG在线进行调试的时候,是把bit文件是烧写到FPGA中进行在线调试。 bin文件 bin 文件是二进制文件,按顺序只包含原始字节流&#xff0c…