一、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;
    }