curl -I http://20.0.0.12 查看Nginx的版本
第一种是修改Nginx的源码文件,指定不显示版本号
vi /usr/local/nginx/conf/nginx.conf
server_tokens off; 隐藏版本信息systemctl restart nginx.servicecurl -I http://20.0.0.12 看一下版本信息隐藏没有
第二种方式:修改Nginx的主配置文件
vi /opt/nginx-1.15.9/src/core/nginx.h
#define NGINX_VERSION "1.1.1"
#define NGINX_VER "IIS" NGINX_VERSION 不去掉这两段的#,直接改后面的参数
下面将Nginx重新编译一次
cd /opt/nginx-1.15.9/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make -j3
make install
nginx -t
vi /usr/local/nginx/conf/nginx.conf
server_tokens on; 打开版本显示信息
systemctl restart nginx.service
curl -I http://20.0.0.12 看一下版本信息改变没有没有
vi /usr/local/nginx/conf/nginx.conf
user nginx nginx; ###修改主和组都是nginx
systemctl restart nginx.service ##重启服务
vi /usr/local/nginx/conf/nginx.conf
在上图显示的代码下面插入下面这一段
location ~ \.(gif|jpg|jepg|png|bmp|ico)$ {
root html;
expires 1d; 指定缓存时间一天
}
systemctl restart nginx.service
选着一张图片放在虚拟机 /usr/local/nginx/html/ 目录下面
然后通过wireshark抓包
打开wireshark开启vm8网卡
在打开谷歌输入20.0.0.12/2.jpg ###也就是IP地址加图片名字
打开200 ok 的
1.设置时间变量
2.设置保存日志路径
3·将目前的日志文件进行重命名
4.重建新日志文件
5.删除时间过长的日志文件
6.设置cron任务,定期执行脚本自动进行日志分割
cd /opt/
vi 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}/51xit.top-access.log-$d
kill -USR1 $(cat $pid_path)
find $logs_path -mtime +30 |xargs rm -rf
chmod +x fenge.sh 添加权限
./fenge.sh
cd /var/log/nginx/
ll 查看是不是有文件
cat /usr/local/nginx/logs/access.log 没有信息,原来的日志文件重新创建了
crontab -e
30 1 * * * /opt/fenge.sh 设置每天1.30自动执行上面的脚本
#mtime参数的理解如下
-mtime n按照文件的更改时间来找文件,n为整数。
n表示文件更改时间距离为n天,-n表示文件更改时间距离在n天以内,+n表示文件更改时间距离在n天以前。
例如:
-mtime 0表示文件修改时间距离当前为0天的文件,即距离当前时间不到1天(24小时)以内的文件。
-mtime 1表示文件修改时间距离当前为1天的文件,即距离当前时间1天(24小时-48小时)的文件。
-mtime +1表示文件修改时间为大于1天的文件,即距离当前时间2天(48小时)之外的文件
-mtime -1表示文件修改时间为小于1天的文件,即距离当前时间1天(24小时))之内的文件
xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.
xargs可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
xargs默认的命令是echo,这意味着通过管道传递给xargs的输入将会包含换行和空白,
不过通过xargs的处理,换行和空白将被空格取代。
xargs是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令,例.
find /sbin -perm +700 | ls-l #这个命令是错误的
find /sbin -perm +700 | xargs ls -l #这样才是正确的
vi /usr/local/nginx/conf/nginx.conf
keepalive_timeout 65 180; 默认是65秒,设置超时的180秒
client_header_timeout 80;
client_body_timeout 80;
systemctl restart nginx.service
cat /proc/cpuinfo |grep -c "physical" 查看cpu的核数4
进入vi /usr/local/nginx/conf/nginx.conf
在gzip on下插入
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/mxl application/xml application/xml+rss;
然后在nginx工作目录下建立一个大于1k的文件抓取文件数据报文
进入Windows中 C:\Windows\System32\drivers\etc 设置一下hosts,加入两个映射
防盗的虚拟机 20.0.0.12 www.51xit.top
盗窃的虚拟机 20.0.0.16 www.52xit.top
先设置防盗的虚拟机
vi /usr/local/nginx/html/index.html
<html>
<head>
<title>-压缩测试页-</title>
</head>
<body><h1>防盗的! ! This is test Page!! </h1>
<img src= "./2.jpg" />
</body>
</html>
20.0.0
vi /usr/local/httpd/htdocs/index.html
<html>
<head>
<title>-压缩测试页-</title>
</head>
<body><h1>这是一个测试网页内容压缩的页面! ! This is test Page!! </h1>
<img src=http://www.51xit.top/2.jpg />
</body>
</html>
vi /usr/local/nginx/conf/nginx.conf
location ~* \.(gif|jpg|jepg|png|bmp|ico)$ {
root html;
expires 1d;
# valid_referers none blocked *.51xit.top 51xit.top;
# if ($invalid_referer) {
# rewrite ^/ https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=250679977,3979511213&fm=26&gp=0.jpg;
# }
插入前面带#的
systemctl restart nginx.service
下面分析一下这段代码:
~* \.(jpg|gif|swf)$:这段正则表达式表示匹配不区分大小写,以.jpg或.gif或.swf结尾的
文件
Valid_referers:设置信任的网站,今以正常使用图片。
None :浏览器中referer为空的情况,就是直接在浏览器访问图片。
Blocked :referer不为空的情况,但是值被代理或防火墙删除了,这些值不以http://或
https://开头。
后面的网址或者域名:referer中包含相关字符串的网址。
If语句:如果链接的来源域名不在valid_referers所列出的列表中,$invalid_referer为
1,则执行后面的操作,即进行重写或返回403页面。
这时重启服务器,重新访问http://20.0.0.16/index.html,显示的是被重写的图片,
说明防盗链配置成功。