` nginx(六) | 听云轩

nginx(六)

日志分割

服务器每天都会产生大量的访问日志,而且不会自动的进行切割,如果持续数天访问,将会导致access.log日志文件很大,不便查看分析。所以可以用shell脚本结合crontab对该日志进行自动快速的切割。

比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
#日志切割
S_LOG=/usr/local/nginx/logs/access.log
D_LOG=/data/backup/`date +%Y%m%d`
echo -e "\033[32mplease wait shell script!\033[1m"
sleep 2
if [ ! -d $D_LOG ];then
mkdir -p $D_LOG
fi
mv $S_LOG $D_LOG
kill -USR1 'cat /usr/local/nginx/logs/nginx.pid'
echo "-------------------------------------------"
echo "Successful!"
echo "You can access backup nginx log $D_LOG/access.log"

然后加入到crontab计划任务中。

防盗链

盗链的含义是网站内容本身不在自己公司的服务器上,而通过技术手段,直接调用其他公司的服务器网站数据,而向最终用户提供此内容。这样是极其消耗被盗链的服务器的资源。所以我们可以配置防盗链技术来防止。

referer是http请求的header的一部分,当浏览器或者模拟浏览器行为向web发送请求的时候,头信息里包含它。比如在 www.dyh.com 里面有一个 www.baidu.com 的连接,那么点击www.baidu.com ,它的header信息里面就有,referer=http://www.dyh.com 。所以我们需要对不信任的网站进行防御。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
server {
listen 80;
server_name localhost;

location / {
root html;
index index.html index.htm;
}

#防盗链
location ~* \.(gif|jpg|png|swf|flv)$ {
#valid_referers none|blocked|server_names|string ...;
valid_referers localhost;
if ( $invalid_referers ){
#rewrite ^/localhost/403.html;
return 403;
}
}
}

或者:

1
2
3
4
if ( $host != 'server_name[自己的网站]' ){
#rewrite ^/localhost/403.html;
return 403;
}

gif|jpg|png|swf|flv :设置防盗链的文件类型。

valid_referers表示可用的referers设置,也就是白名单,允许文件链出的域名白名单。none表示没有referers,直接通过浏览器或者其他工具访问;blocked表示有referers,但是被代理服务器或者是防火墙隐藏;server_names设置一个或多个URL,检测Referer头域的值是否是这些URL中的某个。

比如:

1
2
3
4
5
6
7
location ~* \.(gif|jpg|png|bmp)$ {
valid_referers none blocked *.dyh.com *.baidu.com *.google.com;
if ($invalid_referer) {
return 403;
#rewrite ^/ http://www.wangshibo.com/403.jpg;
}
}
------ 本文结束 ------
您的支持将鼓励我继续创作