一、nginx的优化(重点)
(一)隐藏版本号
由于nginxbug多,更新版本速度比较快,一旦版本号暴露出去,有可能给对方提供攻击的漏洞
1、在http大模块中修改
2、修改nginx.h源码包
(二)nginx的日志分割
1、由于nginx没有自带的日志分割功能,靠运维人员通过脚本实现日志分割
2、日志清理原则
(1)业务日志一般保留30、数据库日志保留2年、用户账户信息加密永久保存、高可用
(2)业务日志如果最近无重大事项,保留10天之内的也可以,但是要申请批准
(三)网页压缩
(四)设置nginx的图片缓存时间
1、设置图片缓存时间:可以在日后访问时不需要经常的向后台请求数据,加快访问速度,一般是针对静态页面,动态页面一般不设置缓存时间
(五)设置连接超时:配置会话保持Keepalive_timeout(一般是60-120秒)
(六)nginx的并发设置
1、在高并发的场景下,需要nginx启动更多的进程来保证快速响应,根据CPU的核心数,调整nginx的工作进程数
2、设置CPU核数和绑定CPU
(1)查看CPU核数
cat /proc/cpuinfo | grep -c processor
cat /proc/cpuinfo | grep processor | wc -l
(七)TIME_WAIT大量出现,如何优化
1、查看time_wait的状态
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
2、TIME_WAIT
(1)TIME_WAIT是tcp连接状态中的一种,不是报错,是正常状态,出现在4次挥手之后
(2)在time_wait状态下,tcp处于连接等待状态,等待有一个持续时间(http1.1自带的会话保持)
(3)time_wait在连接正常关闭之后,一段时间之后会自动消失,占用的资源很少,对服务器性能的影响有限
3、time_wait的作用
(1)确保可靠的关闭连接
(2)避免连接复用
4、如何让time_wait快速消失:改内核文件(工作中会使用)
二、nginx的内置变量,打印结果(重要)
(一)$remote_addr :显示客户端的ip地址
(二)$remote_port:显示客户端的端口号
(三)$uri :显示请求的uri
(四)$host :显示请求的主机名
(五)$request_method :显示请求的方法
(六)重要的变量配置
1、proxy_set_headerX-Forwarded-for $remote_addr
代理服务器设置这个变量,要把客户端的真实ip要发给后端,否则代理服务器地址会被人拉黑
2、proxy_set_headerX-Real-IP $remote_addr
把客户端的真实ip发送给后端,现在所有的网站都要求客户端请求时,加上真实ip
三、防盗链
(一)防盗链:防止其他网站盗用本站的图片
(二)配置防盗链
1、主配置
(1)valid_referers:设置信任的网站 www.kgc.com kgc.com *.kgc.com
valid_referers、invalid_referer都是nginx的内置变量
(2)none:允许没有http_refer的请求访问资源,请求的url可以不包含refer字段,不带uri
(3)访问www.kgc.com/yy.jpg 中的图片时可以直接访问www.kgc.com,就等于访问www.kgc.com/yy.jpg
(4)blocked:请求网站时,前面可以不带协议,可以不带http
(5)if 语句:表示如果连接资源来自上面的vaild_referers定义的信任列表,$vaild_referer变为true,执行重定向