Nginx调优
1、Nginx概念
Nginx 是一个轻量级、高性能的WEB服务器软件和反向代理服务器,Nginx以事件驱动(epoll)的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞。所以必须使用FastCGI方式来执行PHP程序。
2、隐藏nginx版本号
编译前的优化主要是用来修改程序名等等,目的更改源码隐藏软件名称和版本号
3、修改nginx运行账号
编译安装nginx时若不指定--user=, --group=选项,默认是nobody用户
4、虚拟主机
使用Nginx搭建虚拟主机服务器时,每个虚拟WEB站点拥有独立的”server {}”配置段,各自监听的IP地址、端口号可以单独指定,当然网站名称也是不同的。
5、Nginx进程
master是监控进程,也叫主进程,worker是工作进程,部分还有cache相关进程,可以直接理解为master是管理员,worker进程才是为用户提供服务的。
6、设置Nginx运行进程个数
Nginx运行进程个数一般我们设置CPU的核心或者核心数x2
7、Nginx运行CPU亲和力
要根据你的CPU线程数配置,在高并发情况下,通过设置cpu亲和力来降低由于多CPU核切换造成的寄存器等现场重建带来的性能损耗。
8、Nginx最多可以打开文件数
在nginx.conf文件全局配置中添加,一个nginx进程打开的最多文件数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。
9、Nginx事件处理模型
vim /usr/local/nginx/conf/nginx.conf
events {
use epoll;
worker_connections 65535; #单个进程允许客户端最大并发连接数
}
nginx采用epoll事件模型,处理效率高
worker_connections是单个worker进程允许客户端最大连接数,这个数值一般根据服务器性能和内存来制定,实际最大值就是worker进程数乘以work_connections
实际我们填入一个65535,足够了,这些都算并发值,一个网站的并发达到这么大的数量,也算一个大站了!
10、http主体优化
(1)开启高效传输模式
sendfile on;
开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可 设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
tcp_nopush on;
必须在sendfile开启模式才有效,防止网络阻塞,积极的减少网络报文段的数量(将响应头和正文的开始部分一起发送,而不一个接一个的发送。)
(2)连接超时时间 # 主要目的是保护服务器资源,CPU,内存,控制连接数,因为建立连接也是需要消耗资源的
(3)文件上传大小限制 # nginx可以修改上传文件大小限制
(4)servername和location匹配
(5)fastcgi调优 # Fastcgi是静态服务和动态服务的一个接口
(6)gzip调优 # 使用gzip压缩功能,可能为我们节约带宽,加快传输速度,有更好的体验,也为我们节约成本,
(7)expires缓存调优 # 缓存,主要针对于图片,css,js等元素更改机会比较少的情况下使用,特别是图片,占用带宽大,我们完全可以设置图片在浏览器本地缓存365d,css,js,html可以缓存个10来天,这样用户第一次打开加载慢一点,第二次,就非常快了!
11、日志切割优化
日志优化的目的,是为了一天日志一压缩,按天存放,超过10天的删除
12、目录文件访问控制
用在禁止目录下指定文件被访问,当然也可以禁止所有文件被访问!一般什么情况下用?比如是有存储共享,这些文件本来都只是一些下载资源文件,那么这些资源文件就不允许被执行,如sh,py,pl,php等等
13、IP和301优化
有时候,我们发现访问网站的时候,使用IP也是可以得,我们可以把这一层给屏蔽掉,让其直接反馈给403,也可以做跳转
14、防盗链
防止别人直接从你网站引用图片等链接,消耗了你的资源和网络流量,那么我们的解决办法由几种:
1:水印,品牌宣传,你的带宽,服务器足够
2:防火墙,直接控制,前提是你知道IP来源
3:防盗链策略
15、内部身份验证
访问时需要进行身份认证
16、内核参数优化
17、部署LNMP