Web服务器集群——Nginx企业级优化

第八章Nginx企业级优化
一、Nginx服务优化
1、隐藏版本号
(1)修改配置文件
①http中修改server_tokens off;
(2)修改源码文件./src/core/nginx.h
①#define NGINX_VERSION
②#define NGINX_VER
(3)验证:curl -I http://

2、修改用户及组
(1)编译时设置
--user=nginx
--group=nginx
(2)修改配置文件
user nginx nginx;
3、设置网页缓存时间
(1)修改配置文件
location ~ \.(gif|jpg|jepg|png|bmp|ico)$ {
root html;
expires 1d;
}

(2)通过抓包软件查看是否包含Expires

4、日志切割
(1)编写脚本,把日志文件移动到var/log/nginx/下,以当前时间为名称,用kill -USR1创建新日志文件/usr/local/nginx/logs/access.log,最后删除30天前的日志文件

#!/bin/bash
#nginx log fg
d=`date -d "-1 day" +%Y%m%d`
logspath="/var/log/nginx"
pidpath="/usr/local/nginx/logs/nginx.pid"
[ -d $logspatn ] || mkdir -p $logspatn
mv /usr/local/nginx/logs/access.log "$logspath/luobin.com-access-$d.log"
mv /usr/local/nginx/logs/error.log "$logspath/luobin.com-error-$d.log"
kill -USR1 $(cat $pidpath)
find $logspath -mtime +30 | xargs rm -rf



①将脚本加入计划任务
1)30 1 * * * ……logfg.sh
(2)16版本:编辑 /etc/logrotate.d/nginx 文件,内容替换为下面内容(含义是:日志按天分割,最多保留15份,10m以下的不处理,执行完了分割以后reload nginx,防止日志不写到新的文件中)
①然后执行sudo /usr/sbin/logrotate /etc/logrotate.conf 重新加载

/home/admin/logs/nginx/*.log{
      daily
      rotate 15
      minsize 10M
      sharedscripts
      postrotate
             sudo service nginx reload>/dev/null 2>&1
      endscript
}

5、设置连接超时
(1)修改主配置文件http中
keepalive_timeout 65 180;
(2)指定客户端发送请求头的超时时间
client_header_timeout 80;
client_body_timeout 80;

二、Nginx深入优化
1、更改进程数
(1)worker_processes:设置进程数,一般设为CPU的个数或者核数,在高并发的情况下可设置为CPU个数或者核数的2倍
(2)查看CPU核数:cat /proc/cpuinfo | grep -c physical
(3)默认情况下,nginx的多个进程可能更多的跑在一个CPU上,通过设置worker_cpu_affinity 0001 0010 0011 0100;使每个进程分别由不同CPU核心处理(双核:0101 1010;
(4)性能对比


2、网页压缩
(1)压缩模块:ngx_http_gzip_module,默认已安装
(2)开启压缩
gzip on;开启压缩
gzip_min_length 1k;设置允许压缩的页面最小字节数
gzip_buffers 4 16k;表示申请4个单位为16kb的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间
gzip_http_version 1.1;用于识别http协议版本,默认是1.1,目前大部分浏览器已支持gzip解压,但处理很慢,也比较消耗服务器CPU资源
gzip_comp_level 2;用来指定gzip压缩,压缩比1最小,9最大
gzip_types text/plain;压缩类型,对哪些网页文档开启压缩功能
gzip_vary on;让前端的缓存服务器缓存经过gzip压缩的页面
(3)压力测试

3、防盗链

location ~* \.(jpg|gif|swf)$ {
valid_referers none blocked *.test.com test.com;
if( $invalid_referer ){
#rewrite ^/ http://www.bt.com/error.png;
return 404;
}
}

PS:if()中的条件前后加空格


4、FPM参数优化
(1)首先安装带FPM的PHP环境,保证PHP正常运行
(2)FPM进程有两种启动方式,static和dynamic
static使用pm.max_children指定启动进程数
dynamic根据服务器内存与服务负载进行调整
(3)dynamic参数
pm.max_children:指定启动的进程最大数量
pm.start.servers:动态方式下初始的ftmp进程数量
pm.min_spare_servers:动态方式下最小fpm空闲进程数
pm_max_spare_servers:动态方式下最大fpm空闲进程数
(4)动态方式因为会结束掉多余的进程,可以回收释放一些内存,所以推荐在内存较少的服务器或者VPS上使用。具体最大数量根据 内存/20M 得到。(比如说512M,建议pm.max_spare_servers设置为20(512*0.8/20)。至于pm.min_spare_servers,则建议根据服务器的负载情况来设置,比较合适的值在5~10之间。)
(5)对于比较大内存的服务器来说,设置为静态的话会提高效率。(比如说2GB内存的服务器,可以设置为50;4GB内存可以设置为100等。)
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值