1.配置参数优化
-
隐藏nginx header里版本号信息
文档地址:http://nginx.org/en/docs/http/ngx_http_core_module.html
使用curl查看隐藏前header里的web版本号信息curl -I 192.168.47.151
编辑nginx.conf配置文件增加参数隐藏版本号http{ ... server_tokens off; ... }
server_tokens:作用是控制http response header内的web服务版本信息显示,以及错误信息中web服务版本信息显示
检查
-
更改nginx默认用户及用户组
创建用户useradd nginx -s /sbin/nologin -M
修改配置文件参数nginx.conf,头部加入 user nginx;
-
配置nginx worker进程个数
worker_processes 4; <==根据服务器的硬件情况配置,初始为cpu的个数或核数
-
调整nginx单个进程允许的客户端最大连接数
events { worker_connections 1024; }
nginx总并发连接数 = worker_processes * worker_connections
-
配置nginx每个进程最大打开文件数
workder_rlimit_nofile 65535;
-
优化服务器名字的hash表大小
http{ server_names_hash_bucket_size 64; }
-
开启高效文件传输模式
http{ sendfile on; tcp_nopush on; }
-
设置连接超时时间
http{ keepalive_timeout 65; <=设置客户端保持会话的超时时间,超过此时间,服务器会关闭该连接 tcp_nodelay on; <=打开tcp_nodelay ,包含了keepalive参数才有效 client_header_timeout 15; <=设置客户端请求头读取超时时间,如超过这个时间,客户端还没有发送任何数据,nginx将返回"Request timeout(408)错误" client_body_timeout 15; <=设置客户端请求主体读取超时时间,如超过这个时间,客户端还没有发送任何数据,nginx将返回"Request timeout(408)错误,默认值:60" send_timeout 15; <=指定响应客户端的超时时间,这个超时近限于两个连接活动之间的时间,如果超过这个时间。客户端无任何活动,nginx将会关闭连接 }
PHP网站建议短连接,JAVA网站建议长连接
-
上传文件大小限制
client_max_body_size 10m;
-
配置nginx gzip压缩功能
http{ gzip on; <=开启压缩功能 gzip_min_length 1k; <=设置允许压缩的页面最小字节数 gzip_buffers 4 32k; <=压缩缓冲区大小,表示申请4个单位为16K的内存作为压缩结果流缓冲 gzip_http_version 1.1; <=压缩版本 gzip_comp_level 9; <=压缩比率。用来指定GZIP压缩比,1:压缩比最小,处理速率最快;9:压缩比最大,传输速度快,但处理最慢,比较消耗CPU资源 gzip_types text/plain text/css application/xml; <=指定压缩的类型,"text/html类型总会被压缩" gzip_vary on; <=vary header支持,该选项可以让前端的缓存服务器缓存经过GZIP压缩的页面 }
优点:
1.节省带宽
2.加快打开速度,提升用户体验
缺点:
1.消耗CPU、MEM查看压缩类型:
less /application/nginx/conf/mime.types
-
配置nginx expires缓存功能
expires 30d;
2.更改源码软件名称及版本号
- 1.修改nginx.h
nginx-1.15.12/src/core/nginx.h
- 2.修改ngx_http_special_response.c
nginx-1.15.12/src/http/ngx_http_special_response.c
- 3.修改 ngx_http_header_filter_module.c
nginx-1.15.12/src/http/ngx_http_header_filter_module.c
3.日志相关优化
- 编写脚本实现nginx access日志轮询
脚本:
加入定时任务:#!/bin/sh cd /application/nginx/logs /bin/mv access.log access_$(date +%F -d '-1day').log /application/nginx/sbin/nginx -s reload
00 00 * * * /bin/sh /server/scripts/cut_nginx_log.sh >/dev/null 2>&1
- 不记录不需要的访问日志
access_log off; <==关闭日志记录功能
- 访问日志的权限设置
chown -R root.root /application/nginx/logs chown -R 700 /application/nginx/logs