nginx

公司产品出现瓶颈?

我们公司项目刚刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户

image-20240418085711867

但是慢慢的,使用我们平台的用户多了,并发量慢慢慢增大了,这时候一台服务器满足不了我们的需求了

image-20240418085800876

于是我们横向扩展,又增加了服务器。这时候几个项目启动在不同的服务器上,用户要访问,就需要增加一个代理访问器了,通过代理服务器来帮我们转发和处理请求

image-20240418085815984

我们希望这个代理服务器可以帮助我们接收用户请求,然后将用户的请求按照规则帮我们转发到不同的服务器节点之上。这个过程用户是无感知的,用户并不知道是哪个服务器返回的结果,我们还希望它可以按照服务器的性能提供不同权重的选择。保证最佳体验!所以我们使用了ngnix

直接访问服务器产生的问题:

image-20240418090044247

代理:

image-20240418090106143

架构的核心精髓:没有什么是加一层解决不了的

nginx反向代理的好处:

  • 提高访问速度
  • 进行负载均衡
  • 保证后端服务安全

所谓负载均衡,就是把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器

nginx是什么?

Nginx 是一款高性能的 Web 服务器和反向代理服务器,同时支持 IMAPPOP3SMTP 服务。它的特点包括占用内存少和并发能力强,因此在高负载的情况下表现出色

ngnix作用

Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理

正向代理与反向代理

阿里云、腾讯云如何搭建局域网

答:默认情况下我们同一个用户购买几台服务器都是在同一个局域网内,不是同一个用户的服务器不是一个局域网下

正向代理(vpn)

image-20240418090251746

反向代理

image-20240418090312499

负载均衡

ngnix提供的是负载均衡策略有两种:内置策略和扩展策略。内置策略为轮询、加权轮询、lp hash;扩展策略,就天马行空,只有你想不到没有它做不到

轮询

image-20240418090355781

权重都是1,每一个服务器循环请求一次

加权轮询

image-20240418090425898

权重高的接受更多的请求

iphash对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不问题。

但是如果存session的服务器挂了呢?那么所有信息都挂了,所有我们建议使用redis

动静分离

动静分离,在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件成为静态文件。让动态网站里的动态网址根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做好缓存操作。提高资源响应

ngnix常用命令

1
2
3
4
5
cd /usr/local/ngnix/sbin/
./ngnix #启动
./ngnix -s stop #停止
./ngnix -s reload #重新加载配置文件
ps aux|grep ngnix #查看ngnix进程