导言——场景故事
什么情况下用到Nginx呢?
当并发量小的时候,只使用一个jar包启动应用就可以了,但是当用户量逐渐增多,并发量增大的时候,仅仅一台服务器显然已经不够用了,需要我们增加一些服务器。这时候当用户访问时,我们需要一个中间件(代理服务器)来帮助用户来转发以及处理请求。使得用户接收tomcat返回的内容。所以我们用了Nginx.
一、什么是Nginx
Nginx(engine x)是一个轻量级高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,其特点是占有内存少,并发能力强,事实上Nginx的并发能力在同类型的网页服务器中表现较好,Nginx是一个安装非常简单、配置文件非常简洁,(支持perl语法)、Bug非常少的服务。Nginx启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。
Nginx代码完全用C语言从头写成。官方数据测试表明能够达到高达50,000个并发连接的响应。
二、Nginx作用是什么
2.1 反向代理
刚刚提到反向代理,到底什么是反向代理?下面就来讲一下正向代理和反向代理。
正向代理
举个例子就理解啦:当我开VPN代理服务器去访问网站时, 代理客户端的就是正向代理.
反向代理
当我们访问百度时,代理器会帮我们转发至合适的服务器去访问百度,这时候的代理器就是反向代理。
总的来说,代理客户端的就是正向代理,代理服务器端的就是反向代理。
2.2 负载均衡
Nginx在转发请求时会有选择的进行选择,使得各个服务器负载均衡。
Nginx提供的负载均衡策略有两种:内置策略和扩展策略。内置策略为轮询、加权轮询、IP hash.。 扩展策略就比较天马行空啦。
轮询:
就是依次轮询,权重都为1
加权轮询
iphash:对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。
动静分离:有很多静态资源是不需要后台处理的,所以我们可以让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。
三、Nginx安装
直接到官网下载稳定版本就好啦,解压之后双击.exe就可以启动。这里讲一下如何配置监听,打开conf下的nginx.conf,在在这里就可以配置你想监听的端口了,http默认就是80端口。
四、常用命令
当修改了nginx的配置文件后,不需要重启nginx。只要执行命令 nginx -s reload 就可生效.如果使用cmd启动的nginx,要使用命令才能关闭nginx 输入命令 nginx -s stop(快速停止nginx)或者 nginx -s quit (完整有序停止nginx)
五、举个栗子
现在我们使用两个端口(8080,8081)来模拟两个服务器,当用户想要访问服务器时,就可以通过代理器来访问啦,那么怎么设置呢?
先来梳理一下nginx.conf文件的主要结构 主要包含三大块:全局配置+events+http服务器
http里包含http配置、upstreaam *** 负载均衡配置 、虚拟主机配置(http默认端口80 https默认端口443)
# 一、全局配置
...
# 二、交互网络连接优化配置
events {
...
}
# 三、http服务器
http {
#http基础配置
...
# 负载均衡配置
upstream ***{
...(与server 个数 对应)
}
# 虚拟主机的配置(可配置多个,与upstream对应)
server {
#server基础配置
...
# 反向代理配置(可配置多个)
location {
# 基础配置
}
}
}
只要按照如下配置:1.在upstream**中配置好服务器的端口 以及负载均衡的方式(默认轮询) 2.指定监听的URL,配置好反向代理就好啦