设为首页 收藏本站
查看: 846|回复: 0

[经验分享] Nginx深度优化

[复制链接]

尚未签到

发表于 2018-11-12 08:57:37 | 显示全部楼层 |阅读模式

  •   隐藏版本号
  •   修改用户与组
  •   网页缓存时间
  •   日志切割
  •   连接超时
  •   更改进程数
  •   网页压缩
  •   防盗链
  •   FPM参数优化
一、隐藏版本号
1.在centos7系统中通过curl命令查看
curl -I http://192.168.100.26
DSC0000.jpg

2.修改nginx.conf配置文件,在http{}内添加server_tokens off;语句
DSC0001.jpg

3.重启nginx
killall -1 nginx4.使用curl命令查看验证
curl -I http://192.168.100.26
DSC0002.jpg

二、修改用户与组
  Nginx运行时进程需要有用户和组的支持,用以实现对网站文件读取时进行访问控制。主进程由root创建,子进程由指定的用户与组创建,默认为nobody。
1.编译nginx时指定用户与组
  ./configure \
  --prefix=/usr/local/nginx \
  --user=nginx \
  --group=nginx \
  --with-http_stub_status_module
2.修改nginx配置文件指定用户与组
vim /usr/local/nginx/conf/nginx.conf
DSC0003.jpg

3.重启nginx
killall -1 nginx4.查看nginx进程信息(主进程root用户,子进程nginx用户)
ps aux | grep nginx
DSC0004.jpg

三、网页缓存时间
  当Nginx将网页数据放回给客户端后,可以设置缓存时间,以便日后进行重复请求访问,以加快访问速度、同时减轻服务器压力,一般对静态资源进行设置,对动态网页不要设置缓存时间。
1.下面对网站的图片进行指定缓存时间设置
DSC0005.jpg

2.修改nginx配置文件,指定缓存时间为1天
vim /usr/local/nginx/conf/nginx.conf
  location ~.(gif|jpg|jepg|png|bmp|ico)$ {
  root html;
  expires 1d;
  }
DSC0006.jpg

3.重启nginx
killall -1 nginx4.Fiddler工具进行抓包验证
DSC0007.jpg

四、日志切割
  Nginx通过nginx的信号控制功能脚本来实现日志的自动切割,并将脚本加入到Linux的计划性任务中,让脚本在每天固定的时间执行,得以实现日志切割功能。
1.编写fenge.sh脚本
vim /opt/fenge.sh
  #!/bin/bash
  #Filename:fenge.sh
  d=$(date -d "-1 day" "+%Y%m%d") #显示一天前的时间
  logs_path="/var/log/nginx"
  pid_path="/usr/local/nginx/logs/nginx.pid"
  [ -d $logs_path ] || mkdir -p $logs_path
  mv /usr/local/nginx/logs/access.log ${logs_path}/test.com-access.log-$d
  kill -USR1 $(cat $pid_path) #创建新日志文件
  find $logs_path -mtime +30 | xargs rm -rf #删除30天前的日志文件
2. 为脚本赋予执行权限
chmod +x /opt/fenge.sh3.执行脚本,测试日志文件是否分割成功
. /fenge.sh
DSC0008.jpg

4.添加计划性任务
crontab -e
  #每日凌晨1:00执行脚本
  0 1 * /opt/fenge.sh
五、连接超时
  一般网站中,为了避免同一个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现对连接访问时间的控制。
1. 修改nginx.conf配置文件
vim /usr/local/nginx/conf/nginx.conf
DSC0009.jpg

2.重启nginx
killall -1 nginx3.对网站进行访问,并使用Fiddler工具进行抓包验证
DSC00010.jpg

六、更改进程数
  在高并发环境中,需要启动更多的Nginx进程以保证快速响应,用以处理用户的请求,避免造成阻塞。
1.查看ngixn运行进程的个数
cat /proc/cpuinfo | grep -c "physical"2.修改nginx.conf配置文件
vim /usr/local/nginx/conf/nginx.conf
DSC00011.jpg

3.重启nginx
killall-1 nginx4.查看nginx进程数
ps aux | grep nginx
DSC00012.jpg

七、网页压缩
  Nginx服务器将输出内容压缩后进行传输,以节约网站的带宽,提升用户的访问体验,默认已经安装了该模块。
1.修改nginx.conf配置文件
vim /usr/local/nginx/conf/nginx.conf
  gzip on;
  gzip_buffers 4 64k;
  gzip_http_version 1.1;
  gzip_comp_level 2;
  gzip_min_length 1k;
  gzip_vary on;
  gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss text/jpg text/png;
2.重启nginx
killall -1 nginx3.创建一个大于1KB以上的网页文件,然后对其进行访问抓包
curl -I  -H "Accept-Encoding: gzip, deflate" 192.168.100.26/
DSC00013.jpg

八、防盗链
  在网站中,一般都要配置防盗链功能,以避免网站内容被非法盗用,造成经济损失,也避免了流量的浪费。
1.修改nginx.conf配置文件
vim /usr/local/nginx/conf/nginx.conf
  location ~.(jpg|gif|swf)$ { #匹配.jpg 、.gif 、或 .swf结尾的文件
  valid_referers none blocked .abc.com abc.com; #信任域名站点
  if ( $invalid_referer ) {
  rewrite ^/ http://www.abc.com/error.png; #重写返回error.png
  }
  }
2.重启nginx
killall -1 nginx九、FPM参数优化
  Nginx的PHP解析功能实现是由FPM处理的,为了提高PHP的处理速度,可对FPM模块进行参数的调整。
  1.安装带有FPM模块的PHP环境;
  2.FPM进程有两种启动方式,由pm参数指定,分别是static和dynamic,前者将产生固定数据的FPM进程,后者将以动态的方式产生FPM进程;
1.修改php-fpm.conf文件
vi php-fpm.conf
  pid = run/php-fpm.pid
  pm = dynamic #动态方式
  pm.max_children=20 #最大启动进程数量为20个
  pm.start_servers = 5 #初始启动时进程为5个
  pm.min_spare_servers = 2 #最小空闲进程数为2个
  pm.max_spare_servers = 8 #最大空闲进程数为8个
  原文出自:
  http://blog.51cto.com/10316297/2139371



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-633925-1-1.html 上篇帖子: 编写nginx服务配置 下篇帖子: nginx配置文档
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表