千家信息网

Nginx优化实战(日志分割、图片缓存、隐藏版本号)

发表于:2024-11-12 作者:千家信息网编辑
千家信息网最后更新 2024年11月12日,Nginx日志分割实例:[root@nginx nginx-1.12.2]# cd /usr/local/nginx/logs/[root@nginx logs]# lsaccess.log err
千家信息网最后更新 2024年11月12日Nginx优化实战(日志分割、图片缓存、隐藏版本号)

Nginx日志分割实例:

[root@nginx nginx-1.12.2]# cd /usr/local/nginx/logs/[root@nginx logs]# lsaccess.log  error.log  nginx.pid[root@nginx logs]# date2019年 11月 14日 星期四 13:49:11 CST[root@nginx logs]# date -d "0 day" "+%Y%m%d"20191114        //以字符串形式显示[root@nginx logs]# date -d "-1 day" "+%Y%m%d"20191113        //统计的是前一天[root@nginx logs]# cd /opt/[root@nginx opt]# lsnginx-1.12.2  rh[root@nginx opt]# touch aaa.txt[root@nginx opt]# find /opt -name ".txt"        //按名字进行查找/opt/aaa.txt[root@nginx opt]# find /opt -name ".txt" | rm -rf       //后面跟删除命令可以删除吗?[root@nginx opt]# lsaaa.txt  nginx-1.12.2  rh       //此时无法删除[root@nginx opt]# find /opt -name "*.txt" | xargs rm -rf    //使用传递命令[root@nginx opt]# lsnginx-1.12.2  rh//以上内容为Shell脚本中的常用手法:前面一条命令的执行结果,作为后面一条命令的参数//创建日志分割脚本[root@nginx opt]# vim fenge.sh#!/bin/bash#Filename:fenge.shd=$(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_pathmv /usr/local/nginx/logs/access.log ${logs_path}/test.com-access.log-$dkill -USR1 $(cat $pid_path)find $logs_path -mtime +30 | xargs rm -rf//按Esc退出插入模式,输入:wq保存退出[root@nginx opt]# chmod +x fenge.sh[root@nginx opt]# ./fenge.sh [root@nginx opt]# cd /var/log/[root@nginx log]# lsanaconda   glusterfs           rhsm                    vmware-vmusr.logaudit      grubby_prune_debug  sa                      wpa_supplicant.logboot.log   lastlog             samba                   wtmpbtmp       libvirt             secure                  Xorg.0.logchrony     maillog             speech-dispatcher       Xorg.0.log.oldcron       messages            spooler                 Xorg.1.logcups       nginx               sssd                    Xorg.9.logdmesg      ntpstats            tallylog                yum.logdmesg.old  pluto               tunedfirewalld  ppp                 vmware-vgauthsvc.log.0gdm        qemu-ga             vmware-vmsvc.log[root@nginx log]# cd nginx/[root@nginx nginx]# lstest.com-access.log-20191113[root@nginx nginx]# date -s 2019-11-132019年 11月 13日 星期三 00:00:00 CST[root@nginx nginx]# date2019年 11月 13日 星期三 00:00:15 CST[root@nginx nginx]# lstest.com-access.log-20191113  test.com-access.log-20191115[root@nginx nginx]# cd /opt/[root@nginx opt]# lsfenge.sh  nginx-1.12.2  rh[root@nginx opt]# ./fenge.sh [root@nginx opt]# cd /var/log/nginx/[root@nginx nginx]# lstest.com-access.log-20191112  test.com-access.log-20191113[root@nginx nginx]# cd /usr/local/nginx[root@nginx nginx]# lsclient_body_temp  fastcgi_temp  logs        sbin       uwsgi_tempconf              html          proxy_temp  scgi_temp[root@nginx nginx]# cd logs/[root@nginx logs]# lsaccess.log  error.log  nginx.pid//日志文件在启动时自动产生

Nginx缓存时间实例:

[root@nginx logs]# umount /aaa[root@nginx logs]# mount.cifs //192.168.10.193/rpm /aaaPassword for root@//192.168.10.193/rpm:  [root@nginx logs]# ls /aaa/rpmls: 无法访问/aaa/rpm: 没有那个文件或目录[root@nginx logs]# ls /aaaapr-1.6.2.tar.gz                  error.png                  nginx-1.12.2.tar.gzapr-util-1.6.0.tar.gz             httpd-2.4.29.tar.bz2       php-7.1.10.tar.bz2awstats-7.6.tar.gz                lf.jpg                     php-7.1.20.tar.gzcronolog-1.6.2-14.el7.x86_64.rpm  mysql-5.6.26.tar.gzDiscuz_X3.4_SC_UTF8.zip           mysql-boost-5.7.20.tar.gz[root@nginx html]# vim index.html 

Welcome to nginx!

//在welcome下一行插入图片行,格式如上,修改完后输入:wq保存退出
此时再刷新之前的网页就会出现我们链接进去的图片:

[root@nginx html]# vim /usr/local/nginx/conf/nginx.conf//76行做如下修改:location ~\.(gif|jepg|jpg|ico|bmp|png)$ {            root html;            expires 1d;        }    }//在default_type下行插入以下内容:http {     include       mime.types;     default_type  application/octet-stream;     server_tokens on;//在worker_connections下行插入以下内容:events {     worker_connections  1024; }user nginx nginx;//修改完成后按Esc退出插入模式,输入:wq保存退出[root@nginx html]# service nginx stop[root@nginx html]# service nginx start
此时哦我们刷新网页,对图片进行抓包信息的查询,可以看到图片的缓存信息为:从2019年11月12日,到2019年的11月13日,缓存时间为一天

Nginx隐藏版本实例:

####方法一:隐藏版本号

[root@nginx ~]# curl -I http://192.168.18.136/HTTP/1.1 200 OKServer: nginx/1.12.2        //此处显示Nginx版本号Date: Tue, 12 Nov 2019 20:59:15 GMTContent-Type: text/htmlContent-Length: 632Last-Modified: Tue, 12 Nov 2019 16:39:13 GMTConnection: keep-aliveETag: "5dcae031-278"Accept-Ranges: bytes[root@nginx ~]# vim /usr/local/nginx/conf/nginx.confhttp {    include       mime.types;    default_type  application/octet-stream;    server_tokens off;//在default_type下一行插入以上内容,修改完成后按Esc后输入:wq保存退出[root@nginx ~]# service nginx stop[root@nginx ~]# service nginx start[root@nginx ~]# curl -I http://192.168.18.136/HTTP/1.1 200 OKServer: nginx               //此时版本号被隐藏Date: Tue, 12 Nov 2019 21:07:13 GMTContent-Type: text/htmlContent-Length: 632Last-Modified: Tue, 12 Nov 2019 16:39:13 GMTConnection: keep-aliveETag: "5dcae031-278"Accept-Ranges: bytes
方法二:伪造版本号
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.confserver_tokens on;       //把off改为on//修改完成后按Esc退出插入模式,输入:wq保存退出[root@nginx conf]# cd /opt[root@nginx opt]# lsfenge.sh  nginx-1.12.2  rh[root@nginx opt]# cd nginx-1.12.2/[root@nginx nginx-1.12.2]# lsauto     CHANGES.ru  configure  html     Makefile  objs    srcCHANGES  conf        contrib    LICENSE  man       README[root@nginx nginx-1.12.2]# cd src/[root@nginx src]# lscore  event  http  mail  misc  os  stream[root@nginx src]# cd core/[root@nginx core]# lsnginx.c           ngx_cycle.h            ngx_output_chain.c    ngx_rwlock.cnginx.h           ngx_file.c             ngx_palloc.c          ngx_rwlock.hngx_array.c       ngx_file.h             ngx_palloc.h          ngx_sha1.cngx_array.h       ngx_hash.c             ngx_parse.c           ngx_sha1.hngx_buf.c         ngx_hash.h             ngx_parse.h           ngx_shmtx.cngx_buf.h         ngx_inet.c             ngx_parse_time.c      ngx_shmtx.hngx_conf_file.c   ngx_inet.h             ngx_parse_time.h      ngx_slab.cngx_conf_file.h   ngx_list.c             ngx_proxy_protocol.c  ngx_slab.hngx_config.h      ngx_list.h             ngx_proxy_protocol.h  ngx_spinlock.cngx_connection.c  ngx_log.c              ngx_queue.c           ngx_string.cngx_connection.h  ngx_log.h              ngx_queue.h           ngx_string.hngx_core.h        ngx_md5.c              ngx_radix_tree.c      ngx_syslog.cngx_cpuinfo.c     ngx_md5.h              ngx_radix_tree.h      ngx_syslog.hngx_crc32.c       ngx_module.c           ngx_rbtree.c          ngx_thread_pool.cngx_crc32.h       ngx_module.h           ngx_rbtree.h          ngx_thread_pool.hngx_crc.h         ngx_murmurhash.c       ngx_regex.c           ngx_times.cngx_crypt.c       ngx_murmurhash.h       ngx_regex.h           ngx_times.hngx_crypt.h       ngx_open_file_cache.c  ngx_resolver.cngx_cycle.c       ngx_open_file_cache.h  ngx_resolver.h//修改nginx.h内核文件,但是后期需要重新编译安装[root@nginx core]# vim nginx.h#define NGINX_VERSION      "1.1.5"//修改完成后按Esc退出插入模式,输入:wq保存退出[root@nginx core]# cd ../../[root@nginx nginx-1.12.2]# lsauto     CHANGES.ru  configure  html     Makefile  objs    srcCHANGES  conf        contrib    LICENSE  man       README[root@nginx nginx-1.12.2]# ./configure \--prefix=/usr/local/nginx \--user=nginx \--group=nginx \--with-http_stub_status_module[root@nginx nginx-1.12.2]# make && make install[root@nginx nginx-1.12.2]# service nginx stop[root@nginx nginx-1.12.2]# service nginx start[root@nginx nginx-1.12.2]# curl -I http://192.168.18.136/HTTP/1.1 200 OKServer: nginx/1.1.5Date: Tue, 12 Nov 2019 21:38:05 GMTContent-Type: text/htmlContent-Length: 632Last-Modified: Tue, 12 Nov 2019 16:39:13 GMTConnection: keep-aliveETag: "5dcae031-278"Accept-Ranges: bytes//此时显示的版本号就是我们修改过的1.1.5
0