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;