nginx调优 第二章

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的地址

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值