Nginx

@Nginx

Nginx

一.Nginx介绍

Nginx(engine x),是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
Nginx(engine x),是一款轻量级的web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行。其特点是占有内存少,并发能力强,事实上Nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用Nginx网站用户有:百度,京东,新浪,网易,腾讯,淘宝等。
在这里插入图片描述
特点
1.占有内存少 Tomcat服务器启动200M Nginx服务器启动时2M
2.并发能力强 Tomcat并发能力150-200左右 Nginx并发能力3-5万/秒
3.Nginx主要的功能做反向代理
4.Nginx可以作为负载均衡服务器使用
5.高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2-3万并发连接数;
6.内存消耗少:在3万并发连接下,开启的10个nginx进程才消耗150M内存(15M*10=150M);
7.配置文件非常简单:风格跟程序一样通俗易懂
8.成本低廉:nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币
9.支持Rewrite重写规则:能够根据域名、URL的不同,将HTTP请求分到不同的后端服务器群组
10.内置的健康检查功能:如果Nginx Proxy后端的某台Web服务器宕机了,不会影响前端访问
11.节省带宽:支持GZIP压缩,可以添加浏览器本地缓存的Header头
12.稳定性高:用于反向代理,宕机的概率微乎其微
13.模块化设计:模块可以动态编译
14.外围支持好:文档全,二次开发和模块较多
15.支持热部署:可以不停机重载配置文件
16.支持事件驱动、AIO(AsyncIO,异步IO)、mmap(Memory Map,内存映射)等性能优化

二.反向代理

1.反向代理概念
客户端是无感知代理的存在的,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。
反向代理,“它代理的是服务端”,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无需在用户端做任何设定。反向代理服务器通常可以用来作为web加速,即使用反向代理作为web服务器的前置机来降低网络和服务器的负载,提高访问效率。
反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问。我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器的地址,隐藏了真实服务器IP地址。
1.1反向代理的作用
1.保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网
2.负载均衡,通过反向代理服务器来优化网站的负载

2.反向代理特点
1.反向代理服务器是介于用户和服务器之间的
2.用户直接访问代理服务器,以为代理服务器就是真实的服务器
3.用户不清楚真实的服务器到底是谁
4.反向代理是服务器端做代理,保护了真实的服务器信息
5.反向代理的主要的作用 访问服务器获得服务器数据的
3.关于图片回显业务说明
网络虚拟地址: http://image.jt.com/a.jpg
真实的磁盘地址:E:/JT_IMAGE/a.jpg
说明:由于某些原因,用户无法直接访问图片服务器,需要一个代理进行中转
在这里插入图片描述

三.正向代理

1.正向代理概念
正向代理,意思是一个客户端和原始服务器之间的服务器,为了从原始服务器获取数据,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端,客户端才能使用正向代理。
Nginx不仅可以做反向代理,实现负载均衡。还能用做正向代理来进行上网等功能。正向代理:如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。
简单来说:通过代理服务器来访问服务器的过程就叫正向代理。
需要在客户端配置代理服务器进行指定网站访问。
2.特点
1.正向代理服务器介于用户和目标服务器之间
2.用户非常清楚的知道服务器网址是谁
3.服务器端不清楚真实的用户是谁
4.正向代理一般都是客户端做代理,保护了用户的信息
5.正向代理一般都是为了获取网络资源,例如路由器
在这里插入图片描述

正向代理和反向代理的区别

在正向代理中,隐藏了客户端信息;
在反向代理中,隐藏了服务端信息;

四.Nginx下载

1.官网介绍
在这里插入图片描述
2.运行Nginx
以管理员身份运行时只运行一次,注意事项:占用80端口
在这里插入图片描述
运行测试
在这里插入图片描述
3.Nginx进程项相关说明
说明:每次启动Nginx服务器时,都会启动两个进程项,一个是守护进程、一个是主进程。
守护进程:防止主进程意外关闭的(内存小的)
主进程:主要提供反向代理服务 (内存大的)
在这里插入图片描述
4.Nginx命令
说明:Nginx的命令要求在nginx.exe所在的目录中执行
1)启动命令 start nginx
2) 重启命令 nginx -s reload
3) 关闭命令 nginx -s stop

5.Nginx反向代理入门案例
在这里插入图片描述

	http {
		#每个服务都是一个server
		server {
			listen 80;   #如果没有特殊的要求监听的都是80!!!
			server_name localhost;
			#开始进行反向代理
			location  / {
				#html是一个相对路径的写法
				root    html ;
				index  index.html;
			}
		}
	}

6.利用Nginx实现图片代理
6.1业务分析
虚拟网络地址: http://image.jt.com/2021/01/27/43fdd159f0f74212927447ccbe85c951.png
本地磁盘地址: E:\JT_IMAGE\2021\01\27\43fdd159f0f74212927447ccbe85c951.png
核心:需要将http://image.jt.com利用Nginx服务器反向代理到E:\JT_IMAGE
在这里插入图片描述
6.2HOSTS文件介绍
作用:在本机可以实现域名与IP地址的映射关系
位置:c:/windows/Systrm32/drivers/etc
在这里插入图片描述
6.3关于switchHosts软件说明
在这里插入图片描述
6.4修改hosts文件
在这里插入图片描述
6.5 修改Nginx配置文件实现图片回显(nginx.conf)
重启Nginx服务器(nginx -s reload)
在这里插入图片描述
7.实现域名代理
7.1需求
要求用户通过http://manage.jt.com的方式访问http://localhost:8091的服务器
7.2步骤
1)修改hosts文件
在这里插入图片描述
2).修改nginx配置文件 实现域名代理
在这里插入图片描述
3).页面效果展现
在这里插入图片描述
8.负载均衡
增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡
客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕后,再将结果返回给客户端。
这种架构模式对于早期的系统相对单一,并发请求相对较少的情况下是比较适合的,成本也低。但是随着信息数量的不断增长,访问量和数据量的飞速增长,以及系统业务的复杂度增加,这种架构会造成服务器响应客户端的请求日益缓慢,并发量特别大的时候,还容易造成服务器直接崩溃。很明显这是由于服务器性能的瓶颈造成的问题,那么如何解决这些情况呢?
我们首先想象到的可能是升级服务器的配置,比如提高CPU执行频率,加大内存等提高机器的物理性能来解决此问题,但是我们知道摩尔定律的日益失效,硬件的性能提升已经不能满足日益提升的需求了。最明显的一个例子,天猫双十一当天,某个热销商品的瞬时访问量是极其庞大的,那么类似上面的系统架构,将机器都增加到现有的顶级物理配置,都是不能满足需求的。那么怎么办呢?上面的分析我们去掉了增加服务器物理配置来解决问题的办法,也就是说纵向解决问题的办法行不通了,那么横向增加服务器的数量呢?这时候集群的概念产生了,单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。
在这里插入图片描述
在这里插入图片描述
9.动静分离
为了加快网页的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。
在这里插入图片描述

二.tomcat集群搭建

1.搭建流程图
在这里插入图片描述
2.搭建步骤
2.1修改端口号
在这里插入图片描述
2.2项目打包
在这里插入图片描述
2.3项目Tomcat准备
在这里插入图片描述
2.4动态获取Tomcat端口号

/**
 * @author zm
 * 时间 2021/1/31
 */
@RestController
public class PortController {

    //动态获取当前端口号信息
    @Value("${server.port}")
    private Integer port;

    @RequestMapping("/port")
    public String getPort(){

        return "当前端口号:"+port;
    }

}

2.5项目Tomcat发布

java -jar 8081.war

在这里插入图片描述
如果有多个war包需要执行,需要打开多个DOS窗口。
3.Nginx实现负载均衡
3.1关于nginx启动说明

注意:nginx不能启动太多,会导致nginx失效。nginx启动之后会有两个进程,一个守护进程,一个主进程。
3.2轮循策略
说明:根据配置文件中的顺序,一次访问Tomcat服务器
配置:修改nginx.conf之后重启nginx服务器

#配置域名代理
	server {
		listen 80;
		server_name  manage.jt.com;

		location / {
			#代理 服务器访问地址
			#proxy_pass http://localhost:8091;
			proxy_pass  http://jtWindows;
		}
	}
	#构建tomcat服务器集群
	#默认规则: 轮询策略
	upstream jtWindows {

		server localhost:8081;
		server localhost:8082;
		server localhost:8083;
	}

3.3权重策略
说明:由于公司内部物理服务器的处理能力可能有高有低,所以需要让高性能的服务器处理更多的请求,因此采用权重的策略。
配置:
在这里插入图片描述
3.4IPHASH策略
需求:在线考试为例,小郑完成学校的考试,马上要写完了,这是电脑宕机,重启之后小郑发现刚才做的题目没有保存,需要重做。小郑很崩溃,问软件应该如何优化?
提示:小郑访问的服务器是刚才的吗?
解决方案:
1)可以让用户与服务器进行绑定
2)将用户的考试信息保存到第三方,之后无论从哪台服务器获取都是相同的结果。
IPHASH算法:
在这里插入图片描述在这里插入图片描述
4.关于nginx高级属性说明(down)
4.1down属性
说明:如果nginx集中添加down属性,则标识nginx服务器不会再将请求发给该服务器。
在这里插入图片描述
4.2backup属性
说明:该属性用来标识备用机,正常的情况下,用户不会再次访问备用,除非当前服务器遇忙、当前服务器宕机,才有可能访问备用机。
在这里插入图片描述
4.3nginx实现Tomcat服务器高可用
高可用说明:当服务器发生故障时,无需人为的干预,可以自动化的实现故障的迁移。
说明:如果发现服务器宕机如果由人工来完成,效率较低,可以通过程序自动完成。
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值