应用场景
nginx 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。众所周知nginx的相比于apache有更高的并发,可以接收处理更多的访问请求
nginx是一个开源且高性能、可靠的HTTP中间件(用户软件与系统之前链接的软件)、代理服务器
(1)静态处理 (对静态页面的处理,不管是httpd还是nginx默认只能处理静态页面)
(2)反向代理 (不直接处理客户端请求,而是将请求转交给其它服务器)
(3)资源缓存 (对客户端经常访问的数据进行缓存,从而加快客户端的访问速度)
(1)高并发量,采用epoll模型结合多进程工作模式(接收和处理)
用户进程不受阻塞,所有请求拿到数据拷贝到应用空间都有内核完成,用户进程可以接收更多用户请求
nginx配置文件中Work processes
(进程数量)最多开启8个,8个以上性能提升不在提升了,而且稳定性变得低,所以8个进程够用了
。
(2)内存消耗较少:处理静态轻松,动态比较吃力
(3)简单稳定:配置的话,基本在一个conf文件中配置,性能文档7*24小时不间断运行
(4)支持模块程度高编写,模块编相对简单(例:reweite、gzip、log、等模块)
(5)支持reweite重写:根据域名、url的不同 ,分别分发给不同的后端程序
(6)支持多系统------linux、windows、等系统
(1)隐藏版本号
访问页面正确,不会显示你之前的版本
如果访问错误页面,会暴露你之前的版本号(要防止回显)
(2)Https协议
https协议可以保证浏览器和服务器之间通信安全
http协议是超文本传输,信息是明文传输。不安全所以使用https协议
(3)访问限制(黑白名单)
Allow 允许 deny all 拒绝所有
使用方法:
Allow 192.168.1.1; 允许地址访问
·
Deny all all; 拒绝所有
·
Deny 192.168.1.1 ; 拒绝此地址访问 Allow all; 允许所有
·
或者限制并非连接数 HTTP_LIMIT_CONN=YES (连接次数) 限制并发连接数,包括单个客户端的IP
·
地址在单一时间所发起的连接数量 HTTP_LIMIT_REQ=YES (请求次数)
·
限制请求的处理速率,特别是单一的IP地址的请求的处理速率。 访问认证 (对所访问网站,进行添加用户名和密码)
(4)防盗链:
防盗链就是防止别人盗取你们公司的图片、文件、视频
作用:防盗链就是防止别人盗用服务器中的图片、文件、视频等相关资源。
(5)性能优化
绑定nginx进程到不同的cpu上 默认情况下,Nginx 的多个进程有可能跑在某一个 CPU 或 CPU 的某一核上,导致 Nginx进程使用硬件的资源不均,因此绑定 Nginx 进程到不同的 CPU 上是为了充分利用硬件的多 CPU 多核资源的目的。
设置nginx最大文件打开数
当你遇到报错:ERROR:too many open files #打开文件数过多
这时候就要往上调一下打开数
在主配置文件,全局区域配置区域进行配置
Worker_rlimit_nofile 102400; 进程最多打开数 最好与ulimit -
n(临时)的值保持一致。跟系统保持一致 永久更改的的话 vi /etc/security/limits.conf 到此文件最后一行添加
nginx soft nofile 102400 nginx hard nofile 102400
开启高效传输提高效率
Sendifle on; 开启零拷贝 Tcp_nopush
on;开启高效传输模式,当有数据时,不着急发送,确保数据包装满,避免网络堵塞
必须在sendfile开启模式才有效,防止网络阻塞,积极的减少网络报文段的数量。
设置上传大小限制
到主配置文件http区域设置
client_max_body_size 1024M; 文件上传大小限制
·
因为上传文件太大会让服务器不堪重负,毕竟服务器储存空间不是无限的(场景) 配置nginx gzip压缩实现性能优化:
·
用户请求的内容在发送给客户端之前,nginx服务器会根据一些具体的策略实施压缩,以节省网站出口带宽,同时加快了数据传输效率,提升了用户的访问体验。
·
压缩的优点: 提升网站用户体验:由于发给用户的内容小了,所以用户访问单位大小的页面就快了,用户体验就提升了
·
节约网站带宽成本:由于数据时压缩传输的,因此,会消耗一些cpu资源 压缩对象: 纯文本内容压缩比很高,因此纯文本内容最好压缩
·
被压缩的纯文本条件必须大于1kB,由于压缩算法的特殊原因,极小的文件压缩反而变大图片、视频(流媒体)等文件尽量不要压缩,因为这些文件大多都是经过压缩的,如果再压缩很可能不会减小或减小很少,或者有可能增大,而在压缩时还会消耗大量的CPU、内存资源
浏览器缓存
nginx expires功能
Expires功能优点
1.可以降低网站的宽带,节约成本、2.同时提升用户的访问体验、3.减轻服务压力,甚至可以节约人力成本、是web服务非常重要的功能
Expires功能缺点
被缓存的页面,数据更新了。用户可能看到的还是旧版本,反而影响用户体验
解决办法:
第一:缩短缓存时间,例如:1天,没有彻底解决。除非更新频率大于1天
第二:更新的时候对缓存的对象改名,具体解释如下
(1)图片,附件一般不会被用户修改,如果用户修改了,实际上也是更改文件名重新传了而已
(2)网站升级对于js,css元素,一般可以改名,把css,js,推送到CDN及用户端需要重新缓存内容
(6)代理
代理就是一个在客户端和服务端之间的服务器(代理)
正向代理就是:
正向代理,意思是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
正向代理代理的对象是客户端
反向代理就是:
反向代理服务器位于用户与真实服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得真实服务器的资源。同时,用户不需要知道真实服务器的地址,也无须在用户端作任何设定。
反向代理代理的对象时服务器
反向代理服务器通常可用来作为Web加速,也可以使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率
(7)负载均衡
当一台服务器的单位时间内访问量越大的时候,服务器压力会越大,当一台服务器压力大得超过自身得承受压力的时候,服务器会崩溃。
负载均衡就可以解决这一弊端
这些服务器组成一个服务器集群,然后当用户访问我们的网站的时候,先访问一个中间服务器,再让这个中间服务器在服务器集群中选择压力较小的服务器
·
然后将该访问请求引入选择的服务器。这样,用户每次的访问,都会保证服务器集群中的每个服务器的压力区域平衡,分担了服务器的压力,避免了服务器崩溃的情况。Nginx 负载均衡模块upstream 需要跟nginx反向代理模块proxy_pass结合起来使用
(8)Nginx动静分离
提高客户端访问的一个效率,静态请求本地处理,动态反向给tomcat处理 动静分离,通过中间件将动态请求和静态请求进⾏分离, 分离资源,
·
减少不必要的请求消耗, 减少请 求延时。 好处: 动静分离后, 即使动态服务不可⽤, 但静态资源不会受到影响
·
通过中间件将动态请求和静态请求分离(proxy_pass)