nginx安全优化及性能总结
1、隐藏nginx软件版本号信息
软件的漏洞和版本有关,所以选择隐藏版本 在nginx.conf 中的http标签内加入server_tokens off参数。
2、优化nginx服务的worker进程数
修改nginx 配置文件:
worker_processes 1; # 指定了nginx要开启的进程数。
优化nginx进程对应不一样的CPU配置时,四核CPU服务器的参数配置如下
work_cpu_affinity 0001 0010 0100 1000;#配置每一个进程分配一核CPU处理。
3、调整nginx单进程容许的客户端最大连接数
nginx 配置文件events中
worker_connections 10240;
nginx的工作模式
use epoll; # nginx 支持的工作模式select、poll、kqueue(bsd系统)、epoll(linux系统,高性能高并发的设置)
4、配置nginx worker进程最大打开文件数
worker_rlimit_nofile 65535 #最大打开文件数,可设置为系统默认数,可设置为系统优化后的ulimit -HSn的结果
5、开启高效文件传输模式
设置参数:sendfile on; #开启文件的高效传输模式,tcp_nopush和tcp_nodelay 提高nginx工作效率
文件传输大小 nginx配置文件:client_max_boby_size 10m;#最大容许上传文件大小
6、配置gzip压缩实现性能优化
开启gzip 压缩功能:gzip:on;
建议设置成大于1k,若是小于1k可能会越压越大
gzip_min_length 1k;
压缩缓存区大小
gzip_buffers 4 16k;
用于设置HTTP协议版本
gzip_http_version 1.1;
用来指定gzip 压缩比,1压缩最小,9压缩最大
gzip_comp_level 2;
用来指定压缩的类型
gzip_types text/plain text/css text/xml application/javascript;
例如squid缓存通过nginx压缩的数据
gzip_vary on;
7、增长http accept-ranges头来提可能升性能
网页的图片,js,css,视频都加http accpt-ranges 头,支持多线程加载,断点续传,提升性能
add_header Access-Control-Allow-Origin *;
add_header Accept-Ranges bytes;
8、nginx图片以及防盗链解决方案
#图片防盗链
location ~* \.(png|jpg|jpeg|gif|swf|flv)$ {
valid_referers nono blocked www. *.
if ($invalid_referer){
rewrite ^/ https://www./img/bd_logo1.png?qua=high;
return 403;
}
}
9、nginx防爬虫优化配置
阻止下载协议代理
if ($http_user_agent ~* LWP::Simple|BBBike|wget)
{return 403;}
10、nginx 跨域配置
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS';
add_header Access-Control-Allow-Credentials 'true';
add_header Access-Control-Allow-Headers 'DNT,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,token,Wecom-Cert,group,preview-user,X-Mx-ReqToken';
11、限制nginx下载速度
limit_conn_zone $binanry_remote_addr zone=conn_zone:1m;
limit_conn 为限制并发连接数
limit_rate 为限制下载速度
12、nginx设置超时时间
client_body_timeout:设置客户端向服务器发送请求体的超时时间,单位为秒。
client_header_timeout:设置客户端向服务器发送请求头的超时时间,单位为秒。
send_timeout:设置服务器向客户端发送响应的超时时间,单位为秒。
keepalive_timeout:设置服务器与客户端之间保持连接的超时时间,单位为秒。
13、nginx添加白名单方法
以x-forward-for 地址为例
set $access false:
if ($http_x_forwarded_for='0.0.0.0'){
set $access true;
}
if ($access ='false') {
return 403
}
geo $http_x_forwarded_for $geo
{ default 1;
0.0.0.0 0;
}
if ($geo=0) {
return 403}
以remote_ddr 为例
allow 0.0.0.0;
deny all;