nginx 优化
摘要:nginx在正常使用时,可以根据需求和性能来进行nginx优化。
目录
一、隐藏版本号
二、修改用户和组
三、缓存时间
四、日志切割
五、连接超时
六、更改进程数
七、网页压缩
八、防盗链
九、nginx事件处理模型优化
十、客户端最大连接数
十一、最大打开文件数
十一、开启高效文件传输模式
十二、 expires缓存功能
十三、URL访问控制
十四、IP访问控制
十五、限制HTTP的请求方法
十六、Nginx运行CPU亲和力
一、隐藏版本号
1.介绍
一般来说,软件的漏洞都和版本相关,所以我们要隐藏或消除web服务对访问用户显示的各种敏感信息隐藏版本号可以将版本号隐藏起来,防止黑客恶意攻击,根据你的服务版本号可以知道相关bug,进行针对行攻击。
2.方法
(1)直接关闭版本号
(2)修改源码包版本号,重新编译安装。
二、修改用户和组
1.介绍
修改nginx服务的默认用户,将nobody改为nginx nginx,nginx是程序用户,不可以登录,增加安全性。
2.方法
(1)直接在nginx主配置文件中修改。
(2)直接在编译nginx的时候指定用户和用户组命令
三、缓存时间
1.介绍
当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度,一般针对静态网页设置,对动态网页不设置缓存时间。
2.方法
(1)加入新的 location,指定缓存对象,指定缓存时间。
四、日志切割
1.介绍
用户请求一个软件时,绝大多数软件都会记录用户的访问情况,nginx软件目前没有类似apache通过cronolog或者rotatelog对日志分隔处理的功能,但是,运维人员可以通过利用脚本开发、nginx的信号控制功能或reload重新加载,来实现日志的自动切割、轮询,方便开发人员和运维人员的查看日志。
2.方法
(1)使用脚本进行切割,可以以时间为切割依据。
五、连接超时
1.介绍
HTTP有一个KeepAlive模式,它告诉web服务器在处理完一个请求后保持这个TCP连接的打开状态。若接收到来自同一客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。
2.方法
(1)设置三次握手的超时时间,等待客户端发送请求头的超时时间会送408 错误,设置客户端发送请求体的超时时间。
六、更改进程数
1.介绍
在高并发场景,需要启动更多的Nginx进程以保证快速响应,以处理用户的请求,避免造成阻塞
2.方法
(1)修改为核数相同或者2倍,设置每个进程由不同cpu处理。
七、网页压缩
1.介绍
Nginx的ngx_http_gzip_module压缩模块提供对文件内容压缩的功能
允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装
2.方法
可在配置文件中加入相应的压缩功能参数对压缩性能进行优化
八、防盗链
1.介绍
在企业网站服务中,一般都要配置防盗链功能,以避免网站内容被非法盗用,造成经济损失,也避免了不必要的带宽浪费。Nginx 的防盗链功能也非常强大,在默认情况下,只需要进行很简单的配置,即可实现防盗链处理。
2.方法
当源主机的正版图片在展示,盗版网站访问正版网站的具体图片时,正版主机直接识别将url重定向为访问盗版网站的url。
九、nginx事件处理模型优化
1.介绍
nginx的连接处理机制在于不同的操作系统会采用不同的I/O模型,Linux下,nginx使用epoll的I/O多路复用模型,在freebsd使用kqueue的IO多路复用模型,在solaris使用/dev/pool方式的IO多路复用模型,在windows使用的icop等等。
2.方法
(1)要根据系统类型不同选择不同的事务处理模型,因此将nginx的事件处理模型调整为epool模型。
十、客户端最大连接数
1.介绍
影响nginx的因素其中是客户端最大连接数,就是文件最大处理数,保证nginx的性能上限。
2.方法
(1)将worker_connections 修改为512的倍数
十一、最大打开文件数
1.介绍
Nginx大并发访问时,每一个网页的访问相当于一个文件的打开,所以最大打开文件数是决定大并发时的上限。
2.方法
(1)作用是改变worker processes能打开的最大文件数
十一、开启高效文件传输模式
1.介绍
sendfile参数用于开启文件的高效传输模式。同时将tcp_nopush和tcp_nodelay两个指令设置为on,可防止网络及磁盘i/o阻塞,提升nginx工作效率。
2.方法
设置参数tcp_nopush,激活tcp_nopush参数可以允许把httpresponse header和文件的开始放在一个文件里发布,积极的作用是减少网络报文段的数量(只有sendfileon开启才生效)
十二、 expires缓存功能
1.介绍
为用户访问网站的内容设定一个过期时间,当用户第一次访问到这些内容时,会把这些内容存储在用户浏览器本地,这样用户第二次及之后继续访问该网站,浏览器就会检查已经缓存在用户浏览器本地的内容,就不会去浏览器下载了,直到缓存的内容过期或者被清除为止。
2.方法
(1)加入location,配置expired时间。
十三、URL访问控制
1.介绍
绝大多数网站都是以用户为中心的,这些产品有一些共同点,就是不允许用户发布内容到服务器,还允许用户发图片甚至附件上传到服务器上,给用户开启了上传的功能。带来了很大的安全隐患。所以要限制用户的url访问,进行安全加护。
2.方法
(1)配置location,指定文件名或文件类型,禁止访问deny。
十四、IP访问控制
1.介绍
限制用户访问,一些恶意攻击的ip,将其禁止,增加安全性。
2.方法
(1)使用ngx_http_access_module限制网站来源IP访问。配置location,指定可以通过,或不可通过的IP地址。
十五、限制HTTP的请求方法
1.介绍
http访问方式,有GET|HEAD|POST三种,可以限制除三种方法以外的方法,增加安全性。
2.方法
(1)例如配置上传服务器限制HTTP的GET的配置,配置一个localtion,当get时,拒绝访问。
十六、Nginx运行CPU亲和力
1.介绍
Nginx运行工作进程个数一般设置CPU的核心或者核心数x2。是影响nginx的重要因素,cpu可以增加nginx处理的性能。一般8个最佳,在高不会增加性能。
2.方法
配置worker_processes 为cpu核数为2的倍数,worker_cpu_affinity 定义cpu亲和力。