03Nginx的静态资源部署,反向代理,负载均衡,动静分离的配置
Nginx具体应用
部署静态资源
Nginx相对于Tomcat处理静态资源的能力更加高效,所以在生产环境下一般都会将Nginx可以作为静态web服务器来部署静态资源
- 静态资源: 在服务端真实存在并且能够直接展示的一些html页面、css文件、js文件、图片、视频等资源文件
- 将静态资源部署到Nginx非常简单,只需要将静态资源文件放到到Nginx安装目录下的html目录中就可以正常访问
http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server {# 监听80端口listen 80; # 服务器的IP地址(域名)server_name localhost; # 处理80端口的location块,用来匹配客户端请求的url,匹配到后去根目录找对应的文件location / {# 指定静态资源的根目录,默认当前目录是配置文件所在的conf目录,html目录和conf目录同级root html;# 指定默认访问的首页(可以指定多个,中间用空格隔开,以";"结尾),默认当前目录是我们指定的根目录index index.html index.htm;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}
}
正向/反向代理
正向代理: 为了从目标服务器取得内容, 客户端向代理服务器发送一个请求并指定目标服务器的地址,然后代理将请求转发给目标服务器并将获得的内容返回给客户端
- 正向代理是给客户端设置代理服务器,客户端知道代理服务器的存在, 通过代理服务器转发请求最终访问到目标服务器
- 正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径即通过代理访问无法访问的资源
反向代理: 用户直接访问反向代理服务器就可以获得目标服务器的资源(用户不需要指定目标服务器的地址), 反向代理服务器负责将请求转发给目标服务器
- 反向代理服务器也是位于用户与目标服务器之间,但却是给服务端设置代理服务器(用户不知道它的存在),用户以为自己访问的就是目标服务器
正向代理和反向代理的区别
正向代理隐藏的是用户
: 原始服务器接收的是代理服务器的请求,用户知道可以通过代理服务器访问无法访问的资源(帮助客户端访问目标服务器)反向代理隐藏的是服务器
: 用户以为自己访问的是目标服务器,其实自己访问的资源是通过反向代理服务器转发的(帮助目标服务器统一处理请求)
负载均衡
随着业务流量越来越大并且业务逻辑也越来越复杂, 单台服务器的性能及单点故障问题就凸显出来了, 因此需要多台服务器组成应用集群进行性能的水平扩展
- 应用集群: 将同一应用部署到多台机器上组成应用集群,集群接收
负载均衡器
分发的请求进行业务处理并返回响应数据 - 负载均衡器: 将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理,既保证服务的可用性又保证响应足够快
- 注意: Nginx是在服务端实现负载均衡,在SpringCloud的客户端我们也可以实现负载均衡
负载均衡的规则
名称 | 说明 |
---|---|
轮询(默认方式) | 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器挂掉能自动剔除 |
weight | 权重方式(权重默认为 1,权重越高请求分发机率越高) |
ip_hash | 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器(IP地址固定),可以解决session的问题 |
least_conn | 依据最少连接方式,分发给处理连接少的服务器 |
url_hash | 依据url分配方式,一个固定的url对应的服务器也是固定的 |
fair | 按后端服务器的响应时间来分配请求,响应时间短的服务器优先分配请求 |
# 不指定默认采用轮询的方式实现负载均衡
upstream myserver{server 192.168.77.130:8080;server 192.168.77.130:8081;
}
# 采用权重的方式实现负载均衡
upstream myserver{server 192.168.77.130:8080 weight=10;server 192.168.77.130:8081 weight=5;
}
# 访问ip的hash结果实现负载均衡
upstream myserver{ip_hash;server 192.168.77.130:8080;server 192.168.77.130:8081;}
# 按后端服务器的响应时间实现负载均衡
upstream myserver{server 192.168.77.130:8080;server 192.168.77.130:8081;fair;
}
需求: 浏览器地址栏输入地址http://192.168.17.129/edu/a.html,根据负载均衡效果将请求平均分配到两台tomcat服务器的8080和8081
端口中
- 在服务器的两台tomcat里面webapps目录中创建web
项目edu
,在edu文件夹中创建页面a.html
第一步: 在http块中添加upstream指令
定义一组服务器,新增一个server块采用负载均衡的规则将请求转发到集群中的某一台服务器
第二步: 访问http://192.168.77.130/edu/a.html发现结果在8080和8081两个服务之间切换
http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; # upstream指令可以定义一组服务器upstream targetServer{# 默认使用轮询的方式实现负载均衡server 192.168.17.129:8080;server 192.168.17.129:8081;}server {# 监听的端口listen 80;# nginx服务的地址server_name localhost;location / {# 添加定义的服务地址,使用定义好的targetServerproxy_pass http://targetServe }}
}
动静分离
Nginx动静分离不能理解成只是单纯的把动态页面和静态页面物理分离,严格意义上说应该是把动态请求跟静态请求分开
动静分离从目前实现角度来讲大致分为两种
- 第一种方案也是目前主流推崇的方案就是把静态文件独立成单独的域名然后放在独立的服务器上,如使用Nginx服务器处理静态页面,Tomcat服务器处理动态页面
- 第二种方案就是把动态跟静态文件混合在一起发布,通过
nginx
来分开动态请求和静态请求,具体就是通过location指定不同的后缀名实现不同的请求转发
对于不经常变动的资源可以使用Expires
参数给一个资源(请求)设定一个过期时间,这样浏览器每次访问的时候可以走缓存的数据,减少浏览器与服务器之前的请求
- 用户在第一次访问服务器后浏览器中会将请求对应的资源进行缓存,下次访问的时候如果缓存的资源没有过期且服务端对应的资源也没有更新就直接走缓存
- 满足则返回浏览器缓存的数据并返回状态码304,不满足则需要从服务器重新下载数据并返回状态码200
第一步: 在liunx系统中/data
目录下准备静态资源,如www/a.html
和image/1.png
第二步: 在nginx的配置文件的location块
配置要访问的静态资源路径
autoindex on
: 在访问静态资源目录时,能够显示目录里面的内容expire
: 设置缓存过期时间
server {# 监听的端口listen 80;# nginx的服务地址server_name 192.168.77.129;# http://192.168.77.129/www/a.htmllocation /www/ {root /data/;index index.html index.htm;# http://192.168.77.129/image/location /image/ {root /data/;# 显示image目录的内容autoindex on;}
}
反向代理一台服务器
需求: 打开浏览器在浏览器地址栏输入地址www.123.com跳转到liunx系统中tomcat的主页面中
第一步: 在windows系统的host文件进行域名和ip对应关系的配置
192.168.17.129 www.123.com
第二步: 在nginx.conf配置文件中添加proxy_pass
属性进行请求转发的配置(反向代理配置)
http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; # 在http块中新增一个server块,用来将请求转发server {# 监听80端口listen 80;server_name 192.168.17.129;location / {# 反向代理配置,将请求转发到目标服务器proxy_pass http://127.0.0.1:8080; }}
}
反向代理多台服务器
使用nginx反向代理(nginx监听端口为9001),根据访问的路径跳转到不同端口的服务中,注意放行8080/8081/9001
对外访问的端口
第一步: 准备两个文件夹安装两个tomcat服务器,修改服务器的conf/erver.xml
配置文件,修改它们的端口号防止冲突
<Server port ="8015" shutdown="SHYTDOWN" >
<Connector port="8080" protocol="HTTP/1.1">
<Connector port="8019" protocol="AJP/1.3">
第二步: 在两个Tomcat的webapps目录下分布创建web项目edu和vod
并存放对应的测试文件a.html
<!--edu/a.html-->
<h1>8080<h1>
<!--vod/a.html-->
<h1>8081<h1>
第三步: 在http块中添加一个新的server块并添加两个location块
- 访问http://192.168.17.129:9001/edu/a.html直接跳转到http://127.0.0.1:8080/edu/a.html
- 访问http://192.168.17.129:9001/vod/a.html直接跳转到http://127.0.0.1:8080/vod/a.html
http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; # 在http块中新增一个server块,用来将请求转发server {# 监听9001端口listen 9001;server_name 192.168.17.129;location ~ /edu/ {# 反向代理配置,将请求转发到目标服务器proxy_pass http://127.0.0.1:8080; }location ~ /vod/ {# 反向代理配置,将请求转发到目标服务器proxy_pass http://127.0.0.1:8081; }}
}
配置高可用
相关文章:
03Nginx的静态资源部署,反向代理,负载均衡,动静分离的配置
Nginx具体应用 部署静态资源 Nginx相对于Tomcat处理静态资源的能力更加高效,所以在生产环境下一般都会将Nginx可以作为静态web服务器来部署静态资源 静态资源: 在服务端真实存在并且能够直接展示的一些html页面、css文件、js文件、图片、视频等资源文件将静态资源部署到Ngin…...
刷题笔记24——完全二叉树的节点个数
有些事情是不能告诉别人的,有些事情是不必告诉别人的,有些事情是根本没有办法告诉别人的,而且有些事情是,即使告诉了别人,你也会马上后悔的。——罗曼罗兰 222. 完全二叉树的节点个数 java的幂运算要 (int) Math.pow(2,l1)-1计算满二叉树的节点数量公式:2 ^ height…...
sentinel环境搭建以及微服务接入
• sentinel部署 • sentinel-镜像制造 • sentinel-镜像推送 • sentinel-部署配置文件 • 访问控制台 • 外网访问控制台 • 集群内访问 • 配置规则 • 限流效果 • 微服务接入 • pom文件引入依赖 • pod部署文件添加配置 Sentinel 控制台是流量控制、熔断降级规则统一配置…...
Klotski: Efficient Obfuscated Execution against Controlled-Channel Attacks
标题:Klotski: Efficient Obfuscated Execution against Controlled-Channel Attacks 作者:Pan Zhang,Chengyu Song,Heng Yin,Deqing Zou,Elaine Shi and Hai Jin 发布:ASPLOS【计算机体系结构顶会】 时间:2020 摘要 Intel Soft…...
阿里云无影云电脑角色AliyunServiceRoleForGws什么意思?
阿里云无影云电脑服务关联角色是指角色名称:AliyunServiceRoleForGws,并赋予角色权限策略:AliyunServiceRolePolicyForGws的过程,简单来说,就是允许无影云电脑服务访问您VPC、CEN和NAS中的资源,使用该权限查…...
操作系统--------调度算法篇
目录 一.先来先服务调度算法(FCFS) 二.短作业优先调度算法(SJF) 2.1.SJF调度算法缺点 三.优先级调度算法 3.1优先级调度算法的类型 1.非抢占优先级调度算法 2.抢占优先级调度算法 3.2优先级的类型 3.1静态优先级 3.2动态…...
宝塔composer 安装laravel依赖出现的问题
环境宝塔、PHP版本8.0.2、laravel9 问题1:PHP Fatal error: Uncaught Error: Call to undefined function Composer\XdebugHandler\putenv() 办法:把PHP版本disable_functions这个中的putenv去掉,这个意思就是putenv被PHP对应的版本禁用了&…...
OpenCV自学笔记二十四:支持向量机
在OpenCV中,支持向量机(Support Vector Machine,简称SVM)算法的实现包含在ml模块中。SVM是一种常用的监督学习算法,主要用于分类问题。 SVM的原理:通过在特征空间中找到一个最优超平面,将不同类…...
网络初识
一 IP 地址 概念: IP 地址主要用于表示网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址 格式 IP 地址是一个32为的二进制数,通常被分割为4个“8位二进制数“(也就是4个字节&…...
极坐标和直角坐标的雅克比矩阵推导
我们经常需要在一些问题中研究坐标系的关系,这里讲讲最常见的极坐标和直角坐标的雅克比矩阵的推导。以二维坐标为例,三维坐标也是同理。 1. 直角坐标和极坐标 直角坐标表示为 ( x , y ) (x,y) (x,y),极坐标表示为 ( ρ , φ ) (\rho,\varph…...
经管博士科研基础【25】概率论中的相关基础概念
1. Support 在概率论中,"support"(支撑集)是指随机变量可能取值的集合。对于离散型随机变量,支撑集包含了所有可能的取值;而对于连续型随机变量,支撑集是指其密度函数或概率质量函数非零的区域。…...
计算机网络的相关知识点总结(一)
1.谈一谈对OSI七层模型和TCP/IP四层模型的理解? 不管是OSI七层模型亦或是TCP/IP四层模型,它们的提出都有一个共同的目的:通过分层来将复杂问题细化,通过各个层级之间的相互配合来更好的解决计算机中出现的问题。 说到分层…...
下载github.com上的依赖资源
下载github.com上的依赖资源(需要反复试才能成功,所以单独安装) export GIT_TRACE1 export GIT_CURL_VERBOSE1 pip install githttps://github.com/PanQiWei/AutoGPTQ.git -i https://pypi.mirrors.ustc.edu.cn/simple --trusted-hostpypi.mi…...
编写 GPT 提示词的公式 + 资源分享
GPT 能够给我们带来很大的帮助,因此我们要好好利用它。我们希望 GPT 输出令我们满意的内容,影响 GPT 输出内容的因素有模型和输入(Prompt,提示词)。 模型:我们可以选择不同的 GPT 产品,它们的模…...
用HTML、CSS和JavaScript制作的通用进制转换器
随着编程和计算机科学越来越受欢迎,我们经常需要进行进制转换。本文将介绍一个简洁、美观、适用于移动设备的进制转换工具,并详细讨论其实现。 目录 🌍 用HTML、CSS和JavaScript制作的通用进制转换器 1.项目图片展示 2. 技术栈 3. 主要功…...
ArcGIS 10.3软件安装包下载及安装教程!
【软件名称】:ArcGIS 10.3 【安装环境】:Windows 【下载链接 】: 链接:https://pan.baidu.com/s/1K5ab7IHMYa23HpmuPkFa1A 提取码:oxbb 复制这段内容后打开百度网盘手机App,操作更方便哦 软件解压码点击原文…...
【数据增强】
【数据增强】 1 数据增强的情形2 数据增强的方法 1 数据增强的情形 当数据比较小,难以获取新的训练数据时,可以考虑数据增强,如随机裁剪部分,随机左右上下翻转、随机旋转一个角度、随机亮度变化等微小变化,数据的多样…...
Ae 效果:CC Force Motion Blur
时间/CC Force Motion Blur Time/CC Force Motion Blur CC Force Motion Blur (CC 强制运动模糊)主要用于为动态图像添加强制的运动模糊效果,增加动态画面的流畅感和真实感。 相对于时间轴面板上的“运动模糊”开关,CC Force Moti…...
2023华为杯研究生数学建模竞赛CDEF题思路+模型代码
全程更新华为杯研赛CDEF题思路模型及代码,大家查看文末名片获取 华为杯C题思路分析 问题一 在每个评审阶段,作品通常都是随机分发的,每份作品需要多位评委独立评审。为了增加不同评审专家所给成绩之间的可比性,不同专家评审的作…...
FP独立站之黑科技:AB站收款、斗篷CLOAK
最近一段时间经常有不少小伙伴来咨询我独立站的相关的业务,因为很多独立站卖家觉得独立站不好做,再加上跨境平台禁止特货类产品的销售(如FP产品、成人用品、电子烟、灰黑类产品等等),但这类产品市场需求大,…...
【Linux网络编程】gdb调试技巧
这篇博客主要要记录一下自己在Linux操作系统Ubuntu下使用gbd调试程序的一些指令,以及使用过程中的一些心得。 使用方法 可以使用如下代码 gcc -g test.c -o test 或者 gcc test.c -o test -g的选项最好添加,如果不添加,l指令无法被识别 …...
ElementUI之登录与注册
目录 一.前言 二.ElementUI的简介 三.登录注册前端界面的开发 三.vue axios前后端交互--- Get请求 四.vue axios前后端交互--- Post请求 五.跨域问题 一.前言 这一篇的知识点在前面两篇的博客中就已经详细详解啦,包括如何环境搭建和如何建一个spa项目等等知识…...
报错处理:Error: Redis server is running but Redis CLI cannot connect
嗨,读者朋友们!今天我来跟大家分享一个我在运维过程中遇到的一个关于Linux上运行Redis服务时的报错及解决方法。 报错信息如下: Error: Redis server is running but Redis CLI cannot connect 这个报错信息表明Redis服务器已经运行ÿ…...
RocketMQ 源码分析——Producer
文章目录 消息发送代码实现消息发送者启动流程检查配置获得MQ客户端实例启动实例定时任务 Producer 消息发送流程选择队列默认选择队列策略故障延迟机制策略*两种策略的选择 技术亮点:ThreadLocal 消息发送代码实现 下面是一个生产者发送消息的demo(同步发送&#…...
ISTQB术语表
此术语表为国际软件测试认证委员会(ISTQB)发布的标准术语表。此表历经数次修改、完善,集纳了计算机行业界、商业界及政府相关机构的见解及意见,在国际化的层面上达到了罕有的统一性及一致性。参与编制此表的国际团体包括澳大利亚、…...
小米笔试题——01背包问题变种
这段代码的主要思路是使用动态规划来构建一个二维数组 dp,其中 dp[i][j] 表示前 i 个产品是否可以组合出金额 j。通过遍历产品列表和可能的目标金额,不断更新 dp 数组中的值,最终返回 dp[N][M] 来判断是否可以组合出目标金额 M。如果 dp[N][M…...
SkyWalking内置MQE语法
此文档出自SkyWalking官方git https://github.com/apache/skywalking docs/en/api/metrics-query-expression.md Metrics Query Expression(MQE) Syntax MQE is a string that consists of one or more expressions. Each expression could be a combination of one or more …...
Springboot2 Pandas Pyecharts 量子科技专利课程设计大作业
数据集介绍 1.背景 根据《中国科学:信息科学》期刊上的一篇文章,量子通信包括多种协议与应用类型: 基于量子隐形传态与量子存储中继等技术,可实现量子态信息传输,进而构建量子信息网络,已成为当前科研热点&…...
RabbitMQ里的几个重要概念
RabbitMQ中的一些角色: publisher:生产者consumer:消费者exchange个:交换机,负责消息路由,接受生产者发送的消息,把消息发送到一个或多个队列里queue:队列,存储消息virt…...
23. 图论 - 图的由来和构成
文章目录 图的由来图的构成Hi, 你好。我是茶桁。 从第一节课上到现在,我基本上把和人工智能相关的一些数学知识都教给大家了,终于来到我们人工智能数学的最后一个部分了,让我们从今天开始进入「图论」。 图论其实是一个比较有趣的领域,因为微积分其实更多的是对应连续型的…...
网站建设技术标准/百度百科优化排名
<script type"text/javascript">//Dom对象不能使用Jquery对象的方法//Jquery对象也不能使用Dom对象的方法//Dom对象转Jquery对象$(function () {var Dom1 document.getElementById(div1);var s $(Dom1).html();alert(s);});//Jquery对象转Dom对象$(function …...
解决wordpress主题缺少style.css无法安装的方法/谷歌seo推广培训班
一、docker是什么 1、为什么会有docker 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后…...
做名片最好的网站是哪个/百度网站入口链接
惠普电脑如何设置光驱启动呢惠普hp pavilion g4 购买之后一直使用很好,最近重新安装系统想设置光盘启动。发现按照常规的F2 F12 del 等都不能进入Bios。最后才发现原来HP进入BIOS的.键是F10,下面是小编为大家收集的资料,一起来看看吧。惠普…...
杭州做网站哪里好/武汉seo和网络推广
•参考资料 [1]:挑战程序设计竞赛(第二版) [2]:http://www.hankcs.com/program/m-n-recursive-division.html(注意看评论) •自学笔记 •对参考资料[2]的理解 定义dp[ i ][ j ] : 将 j 个物品划分成 i 组的总方案数 •1.对“我们定义 n 的 m 划分具体为一…...
廊坊开发区规划建设局网站/1000个关键词
做一件事,如果觉得难那就对了。容易达成的事,没有经过努力获取到的是没有成就感的。人生就像上坡,更高处的风景更值得期待。中国人民大学与加拿大女王大学金融硕士项目给予你前行的力量。 我们每个人的一生中,都是在不断攀登一座…...
域名注册空间网站/百家号关键词排名
# encoding: utf-8 import sys reload(sys) sys.setdefaultencoding(utf-8)#######################Base64加密解密(可逆)################### # Base64编码,64指A-Z、a-z、0-9、和/这64个字符,还有“”号不属于编码字符,而是填充字符 import…...