这里写目录标题
- 一. Nginx的引入背景
- 公司产品出现瓶颈?
- 二 nginx 和 Tomcat 的关系
- 三. 什么是Nginx ?
- (1)Nginx 是什么?
- (2) Nginx 特点:
- 四. Nginx作用?
- 1. `反向代理`:
- 2. 负载均衡
- 3. 动静分离
- 五. Nginx 实战
- 七层反向代理
- 配置tomcat服务器和动态页面
- 配置nginx七层代理
- 四层代理配置
- 两台服务器七层代理操作同上,tomcat操作也同上
- 配置Nginx负载均衡服务器
- 浏览器访问Nginx负载均衡服务器
一. Nginx的引入背景
公司产品出现瓶颈?
我们公司项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户。
-
用户少,并发量少:
但是慢慢的,使用我们平台的用户越来越多了,并发量慢慢增大了,这时候一台服务器满足不了我们的需求了。 -
用户多,并发量增大:
于是我们横向扩展,又增加了服务器。这个时候几个项目启动在不同的服务器上,用户要访问,就需要增加一个代理服务器了,通过代理服务器来帮我们转发和处理请求。 -
横向扩展,增加服务器:
我们希望这个代理服务器可以帮助我们接收用户的请求,然后将用户的请求按照规则帮我们转发到不同的服务器节点之上。这个过程用户是无感知的,用户并不知道是哪个服务器返回的结果,我们还希望他可以按照服务器的性能提供不同的权重选择。保证最佳体验!所以我们使用了Nginx。
二 nginx 和 Tomcat 的关系
- 反向代理:当我们的网站访问量越来越大,一台tomcat 服务器已经无法满足服务需求,需要加服务器,但是服务器直接无法实现session共享,需要加一层(nginx),来转发控制,反向代理到三台服务器中某台,实现数据共享。
- 负载均衡:给服务器性能好的访问权重分配大,给服务性能差的分配流量少。
三. 什么是Nginx ?
(1)Nginx 是什么?
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器
,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。2011年6月1日,nginx 1.0.4发布。
(2) Nginx 特点:
占有内存少,处理并发能力强
,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。
Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。
Nginx代码完全用C语言从头写成。官方数据测试表明能够支持高达 50,000 个并发连接数的响应。
四. Nginx作用?
1. 反向代理
:
- Http代理,包含正向代理和反向代理,作为web服务器最常用的功能之一,尤其是反向代理。
(1) 正向代理:
- 当我们的服务器直接访问外网(举例:美国服务器)的时候特别慢,使用vpn代理,通过vpn提供的代理服务器(举例:香港服务器)。
- 我们请求代理服务器(香港服务器) --> 代理服务器请求外网(美国服务器);然后外网响应给代理服务器,代理服务器再把数据响应给我们的客户端服务器。
正向代理:代理的是客户端,安装在客户端本机上
- 正向代理类似一个跳板机,代理访问外部资源。
正向代理的用途:
① 访问原来无法访问的资源,如google
② 可以做缓存,加速访问资源
③ 对客户端访问授权,上网进行认证
④ 代理记录用户访问记录(上网行为管理),也可以对外网隐藏用户信息。
【从外网的角度,只有代理服务器获取资源的时候有一次记录,当代理告服务器不告诉网站时,外网就不知道这个请求的用户信息】
(2)反向代理:
-
反向代理:代理的是服务端,让用户无感知地浏览服务器资源(无论动容增加了多少台服务器,用户都无法感知,用户访问的永远是域名)
,并且让服务器更好的部署上线。
- 客户端是无感知代理服务器的存在的,访问者者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。
2. 负载均衡
-
Nginx提供的负载均衡策略有2种:内置策略和扩展策略。
-
内置策略为轮询,加权轮询,Ip hash。
-
扩展策略,就天马行空,只有你想不到的没有他做不到的。
-
轮询
-
循环的意思
-
加权轮询
-
iphash
-
对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题
有n台 tomcat 服务器,则有n个 session,如何实现session共享?【实际开发使用的是redis】
- nginx 提供的方法是:ip进行hash运行,从而固定的ip访问固定的某台服务器。
3. 动静分离
▪ 动静分离,在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件。
▪ 让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。
目前,通过使用Nginx大大提高了我们网站的响应速度,优化了用户体验,让网站的健壮性更上一层楼!
五. Nginx 实战
七层反向代理
配置tomcat服务器和动态页面
(1) 安装JDK
(2)配置tomcat多实例
修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量
配置动态页面
配置nginx七层代理
(1)下载nginx
(2)配置反向代理
(3)配置静态页面
(4)重启服务进行网页测试
四层代理配置
准备四台服务器
- Nginx 负载均衡服务器: 192.168.137.101
- 两台Nginx 服务器七层代理服务器 192.168.137.102;192.168.137.103
- 一台tomcat服务器 : 192.168.137.10
两台服务器七层代理操作同上,tomcat操作也同上
所有的Nginx服务器配置文件长连接超时设置为0关闭
配置Nginx负载均衡服务器
浏览器访问Nginx负载均衡服务器