什么是nginx
Nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存小,并发性能强,事实上ngixn的并发能力确实在同类型的网页服务器中变现最好。
Ngixn专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50000个并发连接数。
反向代理
(1)正向代理:如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端想要访问Internet,则需要通过代理服务器来访问,这种代理服务器就称为正向代理。
(2)反向代理:其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器就是对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。
负载均衡
单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们说的负载均衡。
动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。
nginx常用命令
查看nginx的版本号:nginx -v
启动nginx:nginx
关闭nginx:nginx -s stop
重新加载nginx nginx-s reload
ngixn配置文件组成
(1)全局块
从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令。
比如 worker processes 1; worker processes值越大,表示可以支持的并发处理量也越多
(2)events块
events块涉及的指令主要影响Nginx服务器与用户的网络连接
比如worker_connections 1024; 支持的最大连接数
(3)http块
Nginx服务器配置中最频繁的部分
http块也可以包括http全局块、server块
Nginx负载均衡分配策略
顾名思义,负载均衡就是将负载分摊到不同的服务单元,既保证了服务的可用性,又保证响应足够快,给用户很好的体验。快速增长的访问量和数据流量催生了各式各样的负载均衡产品,而nginx提供了几种分配方式(策略):
(1)轮询(默认):
每个请求按照时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,可以自动剔除。
(2)weight
weight代表权重,默认为1,权重越高被分配的客户端越多。
(3)ip_hash
每个请求按照访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
(4)fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配
动静分离
通过Location指定不同的后缀名实现不同的请求转发。通过expires参数设置,可以使浏览器缓存过期时间,减少与服务器之间的请求和流量。具体Expires定义:是给一个资源设定一个过期时间,也就是说无需去服务端进行验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。此方法非常适合不经常变动的资源。(如果是经常更新的文件不建议使用expires来缓存),假设设置3d,表示在这三天内访问这个URL,发送一个请求,比对服务器改文件最后更新时间没有变化,则不会从服务器抓取,返回状态码304,如果有修改,则直接从服务器重新下载,返回状态码200.