1、日志切割优化
日志优化的目的,是为了一天日志一他压缩,按天存放,超过10天的删除
1.2、创建日志切割脚本
cd /usr/local/nginx/logs/
vim cut_nginx_log.sh #日志切割脚本
------------------------------------------------------
在脚本中写入一下内容
cd /usr/local/nginx/logs
if [ ! -d cut ] ; then
mkdir cut
fi
mv access.log cut/access_$(date +%F -d -1day).log
mv error.log cut/error_$(date +%F -d -1day).log
/usr/local/nginx/sbin/nginx -s reload
tar -jcvf cut/$date.tar.bz2 cut/*
rm -rf cut/access* && rm -rf cut/error*
find -type f -mtime +10 | xargs rm -rf
----------------------------------------------------
crontab -e #创建计划任务
0 0 * * * /bin/sh /usr/local/nginx/logs/cut_nginx_log.sh > /dev/null 2>&1
----------------------------------------------------
chmod +x cut_nginx_log.sh #给脚本增加可执行权限
1.2、去掉不需要的日志统计
健康检查的日志,不用写到log中,这些日志没有意义,反而消耗了磁盘的读写,降低了服务器的性能,我们分析日志主要是看一写页面连接,比如200、404等状态码,在SEO中很重要
进入nginx配置文件中
location ~ .*\.(js|jpg|jpeg|JPG|JPEG|css|bmp|gif|GIF)$ {
access_log off;
}
注:
error log 关闭
关闭 error log 千万不要写 error_log off; ,这样错误日志会被写到一个叫做 off的文件中
正确关闭错误的方法:
error_log /dev/null ;
1.3、日志格式优化
nginx软件会把每个用户访问网站的日志信息记录到指定的日志文件中,供网站提供者分析用户的浏览行为等,地功能的由ngx_http_log_module模块负责
nginx的访问日志主要由两个参数控制。
log_format 用来定义记录日志的格式(可以定义多种日志格式,去不同的名字即可)
access_log 用来指定日志文件的路径及使用何种日志格式记录日志
nginx日志格式中默认的参数配置如下
在配置文件中开启一下参数
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
参数说明:
$remote_addr | 与$http_x_forwarded_for 用以记录客户端的ip地址 |
.$remote_user | 用来记录客户端用户名称 |
$time_local | 用来记录访问时间与时区 |
$request | `用来记录请求的url与http协议 |
$starus | 用来记录请求状态:成功是200 |
$body_bytes_sent | 记录发送给客户端文件主题内容大小 |
$http_referer | 用来记录从哪个页面连接访问过来的 |
$http_user_agent | 记录客户浏览器的相关信息 |
$http_x_forwarded_for | 客户端ip地址列表,当有代理服务器时,设置wed站点记录客户端地址的配置,此参数生效的前提是代理服务器上也进行了x_forwarded_for设置 |
2、目录文件访问控制
主要用在禁止目录下指定文件被访问,当然也可以禁止所有文件被访问!一般什么情况下用?比如是有存储共享,这些文件本来都只是一些下载资源文件,那么这些资源文件就不允许被执行,如sh,py,pl,php等等
2.1、禁止访问images下面的php程序文件
2.1.1、修改配置文件
location ~ ^/images/.*\.(php|php5|sh|py|pl)$ {
deny all;
}
————————————————————————————————————————————————
nginx -s reload #重载nginx
2.1.2、创建测试文件
mkdir /usr/local/nginx/html/images #创建images目录
echo "<?php phpinfo(); ?>" > /usr/local/nginx/html/images/index.php #创建index.php文件并在写入内容
测试访问
显示403访问权限不够
2.2.1、配置nginx禁止访问*.txt文件
echo "abcd" > /usr/local/nginx/html/a.txt #创建a.txt文件
测试是否成功
2.2.2、配置规则,禁止访问txt文件
进入配置文件
location ~*\.(txt|doc)${
root /usr/local/nginx/html;
deny all;
}
______________________________________
nginx -s reload #重载nginx
测试
2.2.3、将错误重定向到某个URL
进入配置文件
2.2.4、对目录进行访问限制
mkdir -p /usr/local/nginx/html/{aa,bb} #创建两个目录
echo 'aa' > /usr/local/nginx/html/aa/index.html #创建测试文件
echo 'bb' > /usr/local/nginx/html/bb/index.html #创建测试文件
进入配置文件增加
location /aa/ { return 404 ; }
location /bb/ { return 304 ; }
nginx -s reload #重载nginx
测试
2.3.1对访问来源控制
进入配置文件修改下面的内容
location ~ ^/aa/ {
allow 192.168.1.0/24; #允许1.0网段IP访问
deny all;
}
nginx -s reload #重载nginx
测试
2.3.2、通过if语句控制,即以友好的错误提示
拒绝192.168.1.1的访问网站
进入配置文件修改
location ~/ {
allow 192.168.1.0/24;
if ($remote_addr = 192.168.1.1) {
return 404;
}
deny all;
}
nginx -s reload #重载nginx
3、IP和301优化
有时候。我们发现访问网站的时候,使用IP也是可以的,我们可以吧这一层给屏蔽掉,让其直接反馈给403,也可以跳转
3.1、跳转的做法
修改配置文件
server {
listen 80;
server_name www.benet.com benet.com;
if ($host = 192.168.1.16) {
rewrite ^ http://www.baidu.com;
}
测试
3.2、403反馈的做法
server {
listen 80;
server_name www.benet.com benet.com;
if ($host = 192.168.1.16) {
return 403;
}
301跳转的做法
我们域名在解析的过程中,将abc.com跳转到www.abc.com
3.3、配置301跳转
server {
listen 80;
root html;
server_name www.abc.com qingniao.com;
if ($host = abc.com ) {
rewrite ^/(.*)$ http://www.abc.com/$1 permanent;
}
windows配置host
测试
4、防盗链
防止别人直接从你网站引用图片等链接,消耗了你的资源和网络流量,那么我们的解决办法由几种:
1:水印,品牌宣传,你的带宽,服务器足够
2:防火墙,直接控制,前提是你知道IP来源
3:防盗链策略
4.1、直接给予404的错误提示
进入配置文件
上传图片
访问测试
4.2、防盗链测试
在配置文件中加一个server域名为bente.com在测试的主页上加一个超链接
进入abc.com 的主页文件 在</body>前面加一下内容
<a href="http://www.abc.com/a.jpg">pig</a>
重载nginx
nginx -s nginx
测试:现在访问benet.com 就不能连接到abc.com了
要是想可以连接过去在配置文件中加入benet的地址