Nginx
1 什么是nginx?
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。
它是用C语言写的
2 使用场景
项目刚开始上线的时候,并发量比较小,访问的用户比较少,这时候一个JAR包启动就够了
但是慢慢的,由于用户越来越多,随之而来的是并发量,这时候一台服务器就满足不了需求,于是横向扩展,又增加了几台新的服务器,用户要访问的话,就需要增加一个代理服务器了,通过代理服务器来帮我们转发和出来请求
由于session不能共享,用户通过一个服务器代理其他服务器需要进行系统来回切换,体验极其不好,我们希望这个代理服务器可以帮助我们接收用户的请求,然后将用户的请求按照规则帮我们转发到不同的服务器节点之上,这个过程是无知感的,用户并不知道是哪个服务器返回的结果,我们还希望它可以按照服务器的性能提供不同的权重选择,保证最佳体验!这时候就用到了Nginx
3 Nginx的作用
1 HTTP代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理
正向代理
正向代理主要是代理客户端
(1)理解:客户发送请求给代理服务器,代理服务器代替客户把请求发送给服务器。
(2)特点:服务端收到的请求全部来自于代理服务器,如此一来起到了隐藏客户端的效果,和服务端进行信息交流的全部都是正向代理服务器。
(3)应用:翻墙
反向代理
反省代理主要是代理服务器
(1)理解:代理服务器将收集到的请求发给服务器,服务器处理完请求将结果返回给代理服务器,再由代理服务器将结果返回给客户端。
(2)特点:客户端收到的信息全部来自于代理服务器,如此一来达到了隐藏服务端的效果,如此一来客户端解析服务器域名时得到的将是反向代理服务器(也可以称作负载均衡服务器)的IP。
(3)应用:代理服务器可以根据某些策略对请求做一个合理的分发,比如分发给相对空闲的服务器,如此一来达到了负载均衡的效果。
正向代理和反向代理的区别
(1)正向代理中,客户端知道真正的服务端IP是什么,而服务端并不知真正的道客户端IP是什么;
(2)反向代理中,客户端不知道真正的服务端IP是什么,服务端也不知道真正的道客户端IP是什么;
(3)正向代理一般用来解决访问限制问题;
(4)反向代理一般用来提供负载均衡、安全防护等作用;
2 负载均衡(权重)
比如代理了三台服务器,一台服务器64G,一台服务器32G,一台服务器16G,那么肯定希望最大的这个64G的服务器能够处理更多的请求,这就是负载均衡,也叫权重
轮询
依次去循环去执行请求
加权轮询(权重)
可以给性能较好的服务器设置的权重较大去处理更多的请求
如何配置Nginx权重
3 iphash
iphash对客户端请求的ip进行hash操作,让根据hash结果将对同一个客户端ip的请求分发给一个服务器进行处理,可以解决session不共享的问题
但是由于nginx宕机会导致session丢失,不安全,一般通过redis做session共享
4 动静分离
在开发中,有些请求是需要后台处理的,有些请求是不需要后台处理的(比如css,js,html.jquery,img等文件),这些不需要经过后端处理文件称为静态文件,我们可以把它们放入nginx中提供系统效率
4 安装Nginx
windows安装nginx
进入官网:nginx: download
选择windows压缩包下载
下载到本地解压缩
启动nginx
双击exe启动文件(不推荐,容易一闪而过)
查看nginx配置
默认ip+端口是localhost:80
在本地目录输入cmd进行命令窗口 输入nginx.exe启动
没有日志信息,访问localhost:80或者省略80端口localhost进行访问,出现以下信息说明启动成功
5 Nginx的命令