1.nginx进程数
建议按照cpu数目来指定,一般跟cpu核心数的2倍。
worker_processes 8;
2.Nginx最大打开文件数
worker_rlimit_nofile 65535;
这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。
3.开启高效传输模式
sendfile on:开启高效文件传输模式
4.连接超时时间
client_body_timeout设置请求体的超时时间
keepalived_timeout :客户端连接保持会话超时时间,超过这个时间,服务器断开这个链接。
send_timeout :响应客户端超时时间
5.gzip 调优
使用gzip压缩功能,可能为我们节约带宽,加快传输速度
一般我们需要压缩的内容有:文本,js,html,css,对于图片,视频,flash什么的不压缩
6.expires 缓存调优
缓存,主要针对于图片,css,js等元素更改机会比较少的情况
location ~* .(ico|jpe?g|gif|png|bmp|swf|flv)$ {
expires 30d;
#log_not_found off;
access_log off;
}
location ~* .(js|css)$ {
expires 7d;
log_not_found off;
access_log off;
}
7.防盗链
防止别人直接从你网站引用图片等链接
location ~*^.+.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ {
valid_referers noneblocked www.benet.com benet.com;
if($invalid_referer) {
#return 302 http://www.benet.com/img/nolink.jpg;
return 404;
break;
}
access_log off;
}
8.日志优化
access_log,error_log日志,日至切割,日志打包 定时清理,导入es等
nginx 4、7层协议(传输层、应用层)
4层 用的是NAT技术。NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,请求进来的时候,nginx修改数据包里面的目标和源IP和端口,然后把数据包发向目标服务器,服务器处理完成后,nginx再做一次修改,返回给请求的客户端。
7层 代理:需要读取并解析http请求内容,然后根据具体内容(url,参数,cookie,请求头)然后转发到相应的服务器,转发的过程是:建立和目标机器的连接,然后转发请求,收到响应数据在转发给请求客户端
区别:
由于4层代理用的是NAT,所以nginx不知道请求的具体内容,所以nginx啥也干不了。 用7层代理,可以根据请求内容(url,参数,cookie,请求头)做很多事情。
动态代理:不同的url转发到不同服务器。
所谓四层就是基于IP+端口的负载均衡,通过虚拟IP+端口接收请求,然后再分配到真实的服务器;七层通过虚拟的URL或主机名接收请求,然后再分配到真实的服务器七层就是基于URL等应用层信息的负载均衡。
风控:屏蔽外网IP请求某些敏感url;根据参数屏蔽某些刷单用户。
审计:在nginx层记录请求日志。