本博客整体内容包括

  • nginx静态服务器

    • 了解nginx
    • nginx具体实现的功能
    • nginx简单使用
  • nginx的代理
    • 正向代理
    • 反向代理
    • 反向代理简单案例
    • 反向代理解决跨域问题
  • nginx 动静分离的实现(提高访问速度)
    • 了解什么是动静分离和优缺点
    • 动静分离配置
    • 动静分离案例
  • nginx的负载均衡的实现(负责多台服务器提供服务)
    • 了解什么是负载均衡
    • 实现负载均衡案例
  • nginx 限流的实现(提高访问速度)
    • 限制某一 IP 每秒访问次数
    • 限制某一 IP 瞬间并发量
    • Jmeter的下载和简单使用

nginx静态服务器

1.了解nginx

Nginx (engine x) 是一款轻量开源级免费的软件、高性能的 HTTP 和反向代理服务器。其特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好。

2.nginx具体实现的功能

反向代理
正向代理
负载均衡
HTTP 服务器(包含动静分离)

3.nginx简单使用

1.登录官网 nginx官网下载地址,下载 nginx 文件。我这里下载的是最新稳定版本nginx-1.16.1。
2.解压到指定目录文件并打开文件启动服务器
打开cmd窗口进入到指定文件夹中,输入start nginx启动服务器。看到下图就说明服务器已经启动成功。可以在浏览器中输入localhost:80进行访问
成功启动图片展示
浏览器访问成功图片展示

3.常用命令总结如下:
停止服务器:nginx.exe -s stop
重新启动:nginx.exe -s reload
启动不成功检查命令:nginx.exe -t
4、修改nginx服务器端口号
打开安装目录找到conf文件夹,在文件夹中找到nginx.conf并打开,再找到server进行配置

nginx的代理

1.正向代理

通俗地说正向代理就是客服端找到的服务器代理,对目标服务器进行访问。客服端明确要访问的服务器,服务器别不知道谁进行的访问(个人理解),下面通过一个案例具体说明一下正向代理
我们如果由于技术需要要去访问国外的某些网站,此时你会发现位于国外的某网站我们通过浏览器是没有办法访问的,此时大家可能都会用一个操作FQ进行访问,FQ的方式主要是找到一个可以访问国外网站的代理服务器,我们将请求发送给代理服务器,代理服务器去访问国外的网站,然后将访问到的数据传递给我们!

1.反向代理

通俗地说就是服务器找到的代理服务器进行对外提供服务,在客服端进行访问时并不知道是那台服务器对客服端提供了服务。服务器却直到是那个用户进行了访问
例如:拨打 10086 客服电话,一个省的 10086 客服估计有成千上万个,实际上我们并不关心有多个客服,我们关心的是只要拨通了 10086 的号码能够有客服为我们提供服务就可以了。其实 10086 总机号码就是我们说的反向代
理。

反向代理简单案例

1、创建maven项目
如果有不了解maven的可以进我主页查看,这里不做过多介绍。
2、在pom.xml中添加依赖

<!-- Spring Boot 启动父依赖 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.4.RELEASE</version></parent><!-- 设置编码 --><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- Spring Boot web依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 设置junit测试 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies>

2、创建前端控制器controller,对访问者提供服务。启动服务器

@Controller //定义这个类是前端控制器
public class Hello {//访问路径@RequestMapping("/hello")//返回json格式数据@ResponseBodypublic String hello() {System.out.println("我被访问了");return "服务器二:helloWord!";}}

3、在打开nginx.conf配置文件找到server,在添加一个代理

  location /ysd/ {proxy_pass http://localhost:8080/; #被代理的服务器}

4、重新启动nginx服务器(nginx.exe -s reload),在浏览器中输入nginx代理url即可

解释:我们把http://localhost:8080/地址交给了nginx服务器进行代理,所有在浏览其中直接输入localhost:8086/ysd/就想到与http://localhost:8080/。再加上hello就可以直接访问到项目啦

反向代理解决跨域问题

1、在上面的基础上使用Hbuilder创建一个web项目,在html中页面加载完发送一个post请求。jquery下载

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script type="text/javascript" src="/js/jquery-3.4.1.min.js" ></script></head><body><input type="button" value="显示数据" onclick="shows()" /><script type="text/javascript">function shows(){$.post("http://localhost:8086/ysd/hello",function(res){alert(res);},"text");}</script></body>
</html>

2、把这个项目也交给nginx服务器代理。

 location /ysdq/ {proxy_pass http://127.0.0.1:8020/JQuery/; #被前台代理的服务器index  index.html index.htm;}

3、在访问localhost:8086/ysdq/demo.html就不会出现跨越问题了

nginx 动静分离的实现

1.了解什么是动静分离和优点

1、动静分离:将项目中的 css、js、html、jpg 等静态资源和 jsp、ftl 等动态资源分开处理的一种方式。
2、动静分离优点
a.不同的文件由不同的服务器来处理可以使系统架构更为清晰,维护更加方便;
b.提高服务器响应速度从而增强了用户体验。

2.动静分离配置

找到 nginx 安装目录中的 conf 目录,打开该目录下的 nginx.conf 文件进行编辑,新增如下配置:

#匹配后缀名如下的静态资源文件
location ~.(css|js|html|gif|jpg|jpeg|png|bmp|swf)$ {root html; #资源文件存放的路径(nginx 安装目录中的 html 目录,可更改)expires 30d; #缓存时间 30 天
}
3.动静分离案例

1、在解决跨越的案例中用到的jquery.js可以放到nginx文件中的html目录下创建js文件夹
2、在项目中直接引用即可

<script type="text/javascript" src="/js/jquery-3.4.1.min.js" ></script>

nginx的负载均衡的实现

1.了解什么是负载均衡

当一台服务器在单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。

2. 实现负载均衡案例

前提:由于我现在只有一台电脑,没法进行多台服务器进行模拟,我通过两个完全一样的项目进行模拟,只是端口号不同
1.准备一个和刚才一样的项目,在application.properties文件中修改端口号为8081

server.port=8081

2.负载均衡的配置,在nginx.conf文件中配置

http {#配置上游集群服务器
upstream mytomcat123 {#集群的名称server localhost:8001 max_fails=1 weight=1 fail_timeout=10s;server localhost:8002 max_fails=1 weight=1 fail_timeout=10s;#weight 权重,设置相同时则是轮询访问,也可以设置不同的权重,则按对应的比例进
行访问
#max_fails 最大请求失败次数,默认值为 1
fail_timeout 请求失败之后,等待多久后继续访问的时间,默认值为 10s
#server 10.0.0.11:7070 backup; backup 备用,其它所有服务器宕机时才启用
#ip_hash; IP 策略,每个请求按访问 ip 的 hash 结果分配,可以解决 session 共享的问题
#fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。
}...server {listen 8086;server_name localhost; #设置访问路径#配置集群代理location /ss/ {proxy_pass http://mytomcat123; #集群的名称,和上面设置要保持一致
...}}...
}

3、从新启动nginx,访问localhost:8086/ss/hello就会发现两台服务再进行轮询提供服务。

nginx 限流的实现(提高访问速度)

1、限制某一 IP 每秒访问次数
http {# 限制时间段请求次数,开辟了一块 allips 内存来统计每秒 ip 访问次数limit_req_zone $binary_remote_addr zone=allips:10m rate=1r/s;#1r/s 表示每秒访问 1
次#限制每 ip 每秒不超过 20 个请求,漏桶数 burst 为 5#brust 的意思就是,如果第 1 秒、2,3,4 秒请求为 19 个,#第 5 秒的请求为 25 个是被允许的。#但是如果你第 1 秒就 25 个请求,第 2 秒超过 20 的请求返回 503 错误。#nodelay,如果不设置该选项,严格使用平均速率限制请求数,#第 1 秒 25 个请求时,5 个请求放到第 2 秒执行,#设置 nodelay,25 个请求将在第 1 秒执行。location / {limit_req zone=allips burst=5 nodelay;#每秒每 IP 限制访问 1 次,缓存值为 5...}
}
2、限制某一 IP 瞬间并发量
http {# 限制并发量,开辟了一块 addr 内存来统计 IP 并发量limit_conn_zone $binary_remote_addr zone=addr:10m;location / {limit_conn addr 1; #连接数限制...}
3.Jmeter的下载和简单使用

1.了解Jmeter
Apache Jmeter 是 Apache 组织开发的基于 Java 的压力测试工具。用于对软件做压力测试,它最初被设计用于Web 应用测试,但后来扩展到其他测试领域。它可以用于对静态的和动态的资源的性能进行测试。也可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你还可以使用它做性能的图形分析或在大并发下负载测试你的服务器/脚本/对象。(注:jmeter 下载网址)
2.使用 jmeter 进行服务监听
使用步骤参考如下:

  1. . 运行 Jmeter:
    ⚫ 安装 JDK 环境
    ⚫ 打开文件夹运行 bin 目录下的 jmeter.bat 即可进入 jmeter 的主界面
    ⚫ 启动不了主界面尝试直接启动 bin 目录下的 ApacheJMeter.jar
    2). 创建一个线程组
    点击测试计划,右键添加 Threads,选择线程组,如下图:

    3). 设置线程组参数
    在上面的基础上,进行如下配置,见上图。
    ⚫ 配置线程数:用户数量 100 线程就模拟 100 个用户访问。
    ⚫ 配置 Ramp-Up Period(in seconds):每个线程用户执行间隔,0 代表并发访问
    ⚫ 设置循环次数:每个用户请求的次数,“永远”就是不停的请求
    4). 创建 HTTP 请求右键线程组-Sampler-HTTP 请求
    5). 配置 HTTP 请求配置服务器 IP,端口号,路径是端口号后面的,例如 /xxx.html。如下图所示

    执行测试用例,看到结果是:每秒放行的请求次数不超过允许和缓冲次数之和。测试结果如下:

nginx实现项目服务器集群管理案例和正反代理的解释相关推荐

  1. linux服务器集群管理面板,AppNode-Linux 服务器集群管理面板安装教程

    有关 Linux 面板我们已经说过几个了,如果你手里有很多 Linux 服务器怎么去管理呢,目前这几款中文面板都不具备集中管理功能.今天介绍一款定位于服务器运维管理的AppNode,一款Linux 服 ...

  2. Linux服务器集群管理工具——APPNode的搭建与使用

    Linux服务器集群管理工具--APPNode的搭建与使用 一.AppNode介绍 1.AppNode介绍 2.AppNode特点 3.官方网址 二.使用官方安装脚本一键安装 三.登录web 四.进入 ...

  3. 服务器集群管理应用XGS 9635OSD v2.5

    产品定位:1,XGS系列存储对应服务器多和数据量大的企业.2,ocware容器管理平台对应有服务器的企业,需要从物理机或传统虚拟化迁移到容器的企业. 入门级块存储XGS 1235 v2.5 入门级块存 ...

  4. 可视化服务器集群管理与调度系统,一种基于Slurm作业管理的可视化调度系统技术方案...

    [技术实现步骤摘要] 一种基于Slurm作业管理的可视化调度系统 本专利技术涉及高性能集群作业调度领域,尤其涉及一种基于Slurm作业管理的可视化调度系统. 技术介绍 高性能计算集群是一组通过网络连接 ...

  5. cgi进程设置多少 宝塔_开源、强大的Linux服务器集群管理工具,比宝塔好用!

    「 点击图片获取最近两年爆款好文 」 在这之前肯定很多人都接触过Linux管理面板:宝塔,宝塔的确非常方便而且好用,安装也简单,复制粘贴几句命令即可安装完成,且提供免费版.今天呢,民工哥向大家介绍另一 ...

  6. 开源、强大的Linux服务器集群管理工具,比宝塔好用!

    「 点击图片获取最近两年爆款好文 」 在这之前肯定很多人都接触过Linux管理面板:宝塔,宝塔的确非常方便而且好用,安装也简单,复制粘贴几句命令即可安装完成,且提供免费版.今天呢,民工哥向大家介绍另一 ...

  7. 宝塔linux_开源、强大的Linux服务器集群管理工具,比宝塔好用!

    在这之前肯定很多人都接触过Linux管理面板:宝塔,宝塔的确非常方便而且好用,安装也简单,复制粘贴几句命令即可安装完成,且提供免费版.今天呢,民工哥向大家介绍另一个Linux的服务器管理面板--App ...

  8. (七)centos7案例实战——nginx+keepalived高可用服务器集群搭建

    前言 本节内容延续之前的内容,往期博客已经介绍了如何安装nginx服务器以及将nginx安装成为一个系统服务,本节内容是在前期内容的基础上,搭建一个高可用的nginx服务器集群,主要使用Keepali ...

  9. CGB2005 JT7-8(文件 图片上传 uuid生成文件名 静态代码块,反向代理,Nginx,Host文件,tomact集群实现项目发布 ,nginx负载均衡种类)

    注意事项 1.京淘文件上传 文件上传api 京淘图片上传 利用静态代码块赋值 图片上传优化(动态赋值) uuid去掉横线 2.反向代理机制(正向反向代理说明) nginx学习 nginx实现反向代理 ...

最新文章

  1. Trie的C++实现及HDU1251,hdu1671
  2. 2016中国知识管理发展的7个趋势
  3. 后端根据百度地图真实路径距离_远场语音识别错误率降低30%,百度提基于复数CNN网络的新技术...
  4. 深入理解python特性_深入理解Python特性(7)
  5. 【收藏】生产订单业务流程
  6. JQuery选择器 属性值 等于 以开头 以结尾 元素选择
  7. Android studio导入项目提示The same input jar [*.jar] is specified twice
  8. [Java基础]类和接口的关系
  9. Adapter(适配器)--类对象结构型模式
  10. Android 使用ViewPager实现view轮播效果,单个item分页样式,多个item分页样式,横向listview
  11. TensorFlow实验(1)
  12. 【并查集+dp】Team
  13. 跳一跳python_微信跳一跳python怎么刷分?跳一跳python怎么使用?
  14. SpringCloud 入门教程(三): 配置自动刷新
  15. 外观模式和代理模式的联系和区别_设计模式之代理设计模式
  16. Three.js 学习笔记 - 给跳一跳小游戏添加光源,阴影
  17. android Adapter笔记
  18. 基于linux的贪吃蛇游戏设计_基于Unreal4的战棋类游戏《棋行傀儡》的设计与实现...
  19. 日常笔记系列:java汉字判断
  20. OpenCV入门(八)——形态学技术

热门文章

  1. Opencv的Mat内容小记
  2. 活了20年多了才知道!蜂蜜十大鲜见真相吓掉小命
  3. 这 7 个微信小程序 yyds
  4. Android 倒影
  5. OpenCV2马拉松第4圈——图片混合
  6. Java –比较枚举值
  7. 控件注册失败解决方案
  8. 法国开源软件公司 Nexedi 起诉苹果扼杀 HTML5
  9. Radiology第12期:淋巴系统及其相关疾病的成像和干预
  10. uniapp 下拉刷新、上拉加载更多、最常见的节流场景