一、NGINX 基本安全优化
1、隐藏NGINX软件版本号信息
[root@localhost nginx2]# curl -I 10.3.151.34
HTTP/1.1 502 Bad Gateway
Server: nginx/1.13.4
Date: Tue, 24 Jul 2018 01:22:28 GMT
Content-Type: text/html
Content-Length: 537
Connection: keep-alive
ETag: "5b505df9-219"
2、NGINX配置文件nginx.conf中的http标签段内加入“server_tokens off” 参数:
http
{
server_tokens off;
}
二、根据服务器性能调整worker进程个数
1、worker进程理解
NGINX服务有Master进程和worker进程之分,Maste为管理进程,Worker为工作进程,而Worker进程默认为1个,而在搭建服务器时,可根据CPU的核数进程设置。
2、查看服务器CPU核数
[root@localhost nginx2]# grep processor /proc/cpuinfo | wc -l
8
或者通过top命令,然后按“1”就可查看CPU核数
3、修改worker进程数
worker_processes 8;
三、NGINX事件处理模型优化
1、nginx事件处理模型理解
NGINX的连接处理机制在不同的操作系统会采用不同的I/O模型,在LINUX下,NGINX使用EPOLL的I/O多路复用模型,在WINDOWS中使用的是ICOP。
2、修改事件处理
events {
use epoll;
#根据官方文档建议,也可以不指定事件处理模型,NGINX会自动选择最佳的模式。
}
四、调整NGINX单个进程允许的最大客户端并发连接数
1、单进程最大并发连接数理解
worker_connections 也是个事件模块指令,用于定义NGINX每个进程的最大连接数,默认为1024,最大客户端连接数由work_processes和worker_connections决定,即Max_client=worker_processes*worker_connections。进程的最大连接数受linux系统进程的最大打开文件数限制,在执行操作系统“ULIMIT -HSn 65535” 或配置相应文件后,worker_connections的设置才能生效。
2、修改单进程最大并发连接数配置
events {
worker_connections 10240;
}
四、调整NGINX worker进程最大打开文件数
1、进程最大打开文件数理解
最大打开文件数,可设置为系统优化后的ulimit -HSn 的结果。
2、修改进程最大打开文件数
worker_processes 8;
events {
worker_connections 1024;
}
worker_rlimit_nofile 65535; #进程最大打开文件数
error_log logs/error.log;
五、开启NGINX 高效文件传输模式
1、高效文件传理解
sendfile 参数用于开启文件的高效传输模式,同时将tcp_nopush 和 tcp_nodelay 两个指令设置为on,可访止网络及磁盘I/O阻塞,提升NGINX工作效率。sendfile()是作用于两个文件描述符之间的数据拷贝函数,这个拷贝操作是在内核之中,被称为“零拷贝”。
2、配置修改(在http模块)
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
}
五、调整上传文件大小的限制
1、修改配置文件
http {
client_max_body_size 50m; #系统默认为1m
}
五、配置Nginx gzip 压缩实现性能优化
1、gzip 的作用理解
Nginx gzip 压缩模块提供了压缩文件内容的功能,用户请求的内容在发送到用户客户端之前,NGINX服务器会根据一些具体的策略实施压缩,以节约网站出口的带宽,同时加快数据传输效率,来提升用户访问体验。
2、gzip 配置文件
http {
gzip on;
gzip_min_length 1k; #少于1K不压缩
gzip_buffers 4 16k; #设置压缩缓存区
gzip_http_version 1.1; #压缩的版本
gzip_comp_level 3; #压缩比率,1-9,数值越大,压缩越大,传输速度更快,但消耗CPU资源。
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
#设置压缩的类型,图片没有压缩意义
gzip_vary on; #可让前端的缓存服务器经过gzip压缩的页面,如squid
gzip_disable "MSIE [1-6]\."; #IE1-6不压缩
}
六、配置Nginx expires 缓存实现性能优化
1、expires 的作用理解
简单地说,nginx expires 的功能就是为用户访问的网站内容设定一个过期时间,当用户第一次访问这些内容时,会把这些内容存储在用户浏览器本地,这样用户第二次及以后继续访问该网站时,浏览器会检查加载已经缓存在用户浏览器的内容,就不会去服务器下载了,直到缓存的内容过期或被清除为止。
2、expires 配置(通常配置在location下,并缓存图片\JS\CSS等)
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}