Nginx高性能服务器

简介: Nginx高性能服务器

Nginx

nginx的应用场景

简介

Nginx ("engine x") 是一个高性能的 HTTP和反向代理服务器,特点是占有内存少,并发能
力强,事实上 nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用 nginx
网站用户有:百度、京东、新浪、网易、腾讯、淘宝等

作为 web 服务器的功能

Nginx可以作为静态页面的 web服务器,同时还支持 CGI协议的动态语言,比如 perl、php
等。但是不支持 java。Java程序只能通过与 tomcat配合完成。Nginx专为性能优化而开发,
性能是其最重要的考量,实现上非常注重效率 ,能经受高负载的考验,有报告表明能支持高
达 50,000个并发连接数。
https://lnmp.org/nginx.html

代理

正向代理
客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

反向代理
由反向代理服务器去选择目标服务器获取数据后,在返
回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器
地址,隐藏了真实服务器 IP地址。

负载均衡
我们单台机器无法支持运转的时候,可以横向扩充多台机器,将压力分散出去

动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速
度。降低原来单个服务器的压力。

案例

反向代理案例一(无条件代理)

实现效果:使用 nginx反向代理,访问 www.123.com 直接跳转到 127.0.0.1:8080
我们需要修改本地的host文件,将 www.123.com 映射到 127.0.0.1

我们便可以通过 www.123.com:8080 访问到第一步出现的 Tomcat初始界面。

之后去编写nginx的配置文件

如上配置,我们监听 80端口,访问域名为 www.123.com,不加端口号时默认为 80端口,故
访问该域名时会跳转到 127.0.0.1:8080路径上。在浏览器端输入 www.123.com 结果如下:

反向代理案例二(有匹配规则的代理)

实现效果:使用 nginx反向代理,根据访问的路径跳转到不同端口的服务中
nginx监听端口为 9001,
访问 http://127.0.0.1:9001/edu/ 直接跳转到 127.0.0.1:8081
访问 http://127.0.0.1:9001/vod/ 直接跳转到 127.0.0.1:8082

我们需要有两个tomcat启动

一个启动80一个启动8081
之后配置nginx

location指令说明


1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配
成功,就停止继续向下搜索并立即处理该请求。
2、~:用于表示 uri 包含正则表达式,并且区分大小写。
3、~ **:用于表示 uri 包含正则表达式,并且不区分大小写。
4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字
符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location
块中的正则 uri 和请求字符串做匹配。

注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。

负载均衡

实现了访问一个路径,可以以轮询(一边一次的)方式去8080和8081两个端口访问
这里我们在两个tomcat里都准备好对应的文件

之后配置nginx

随着互联网信息的爆炸性增长,负载均衡(load balance)已经不再是一个很陌生的话题,
顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应
足够快,给用户很好的体验。快速增长的访问量和数据流量催生了各式各样的负载均衡产品,
很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎,
nginx就是其中的一个,在 linux下有 Nginx、LVS、Haproxy等等服务可以提供负载均衡服
务,而且 Nginx提供了几种分配方式(策略):
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 dow n 掉,能自动剔除。
2、weight
weight 代表权,重默认为 1,权重越高被分配的客户端越多
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 例如:

upstream server_pool{
server 192.168.5.21 weight=10;
server 192.168.5.22 weight=10;
}

3、ip_hash
每个请求按访问ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。 例如:

upstream server_pool{
ip_hash;
server 192.168.5.21:80;
server 192.168.5.22:80;
}

4、fa ir(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream server_pool{
server 192.168.5.21:80;
server 192.168.5.22:80;
fair;
}

动静分离

Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和
静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用 Nginx
处理静态页面,Tomcat处理动态页面。

我们现在我们的服务器上设置一个存放静态资源的文件

之后去写nginx的配置文件

重点是添加 location,
最后检查 Nginx 配置是否正确即可,然后测试动静分离是否成功,之需要删除后端 tomcat
服务器上的某个静态文件,查看是否能访问,如果可以访问说明静态资源 nginx 直接返回
了,不走后端 tomcat 服务器
效果图

到这里nginx常用的一些使用案例就总结完成了,

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
4月前
|
缓存 负载均衡 应用服务中间件
Linux-----nginx的简介,nginx搭载负载均衡以及nginx部署前后端分离项目
Linux-----nginx的简介,nginx搭载负载均衡以及nginx部署前后端分离项目
210 2
|
缓存 应用服务中间件 nginx
Nginx 动静分离架构 个人笔记
Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx 处理静态页面,Tomcat、 Resin 出来动态页面。动静分离从目前实现角度来讲大致分为两种,
105 0
|
负载均衡 算法 应用服务中间件
『Nginx』一文讲透Nginx的五大负载均衡算法
📣读完这篇文章里你能收获到 - Nginx的五大负载均衡算法
134 0
『Nginx』一文讲透Nginx的五大负载均衡算法
|
缓存 应用服务中间件 数据处理
Nginx - 服务器架构
Nginx - 服务器架构
197 0
Nginx - 服务器架构
|
应用服务中间件 nginx Docker
|
负载均衡 Java 应用服务中间件
Nginx:高性能服务器
Nginx:高性能服务器
Nginx:高性能服务器
|
应用服务中间件 nginx
重新认识 nginx 反向代理
后端开发的小伙伴经常会用到 nginx 工具,那么我们不禁要问:它具体的作用是什么呢?今天我们就来通过一个实例来搞清楚!
129 0
|
应用服务中间件 nginx 开发者
Nginx 架构
一、Nginx 模块化设计 高度模块化的设计是 Nginx 的架构基础。Nginx 服务器被分解为多个模块,每个模块就是一个功能模块,只负责自身的功能,模块之间严格遵循“高内聚,低耦合”的原则。 核心模块 核心模块是 Nginx 服务器正常运行必不可少的模块,提供错误日志记录、配置文件解析、事件驱动机制、进程管理等核心功能。
2496 0
|
应用服务中间件 nginx Java
|
应用服务中间件 nginx 缓存
Nginx 动静分离架构(学习笔记九)
一、原理 Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx 处理静态页面,Tomcat、 Resin 出来动态页面。
1280 0