LNMP 静态文件不记录日志和过期时间Nginx防盗链Nginx访问控制解析php

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LNMP 静态文件不记录日志和过期时间Nginx防盗链Nginx访问控制解析php相关的知识,希望对你有一定的参考价值。

                    静态文件不记录日志和过期时间

技术分享图片

进入到虚拟主机配置文件 cd /usr/local/nginx/conf/vhost

 编辑虚拟主机配置文件:vim test.com.conf  添加内容:

 

配置如下

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

    {

          expires      7d;    //过期时间

          access_log off;

    }

location ~ .*\.(js|css)$  

    {

          expires      12h;

          access_log off;

    }

技术分享图片


修改完配置文件后:

(1)测试配置文件是否正确:

 /usr/local/nginx/sbin/nginx -t

(2)加载一下配置文件:

 /usr/local/nginx/sbin/nginx -s reload


访问测试:

1.进入到主机访问目录:cd /data/wwwroot/test.com

2.创建测试文件:

vim 1.gif   vim 2.js

技术分享图片


                Nginx防盗链


技术分享图片

(其实就referer)

进入到虚拟主机配置文件 cd /usr/local/nginx/conf/vhost

 编辑虚拟主机配置文件:vim test.com.conf  添加内容:

location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ 

//~* 表示后面的内容不区分大小写

{

    expires 7d;

    valid_referers none blocked server_names  *.test.com ; //server_names可以不写,设置白名单

    if ($invalid_referer) {

        return 403;

    }

    access_log off;

}

技术分享图片

修改完配置文件后:

(1)测试配置文件是否正确:

 /usr/local/nginx/sbin/nginx -t

(2)加载一下配置文件:

 /usr/local/nginx/sbin/nginx -s reload



测试防盗链 (-e +referer)

1.(不是制定的referer时报403)

vhost]# curl -e "http://www.baidu.com" -x127.0.0.1:80 test.com/1.gif -I

技术分享图片

2.(是制定的referer时访问成功

curl -e "http://www.test.com" -x127.0.0.1:80 test.com/1.gif -I

技术分享图片


            Nginx访问控制(重要)

技术分享图片


1.针对目录做访问

进入到虚拟主机配置文件 cd /usr/local/nginx/conf/vhost

 编辑虚拟主机配置文件:vim test.com.conf  添加内容:

location /admin/       //针对/admin目录做访问控制

{

    allow 192.168.136.133;

    allow 127.0.0.1;

    deny all;

}

(nginx中设置中不分,deny,allow 先后顺序)

技术分享图片


事前已经创建了我们的控制访问目录/admin/技术分享图片



修改完配置文件后:

(1)测试配置文件是否正确:

 /usr/local/nginx/sbin/nginx -t

(2)加载一下配置文件:

 /usr/local/nginx/sbin/nginx -s reload



测试:

(1)设置有允许白名单的ip,访问成功:

curl  -x127.0.0.1:80 test.com/admin/ -I

技术分享图片


(2)设置在没有允许的白名单的ip,访问不成功:(403)




技术分享图片

2.针对某些目录以php结尾的文件做访问控制()

.针对目录做访问

进入到虚拟主机配置文件 cd /usr/local/nginx/conf/vhost

 编辑虚拟主机配置文件:vim test.com.conf  添加内容:

location ~ .*(upload|image)/.*\.php$

{

        deny all;

}

技术分享图片


修改完配置文件后:

(1)测试配置文件是否正确:

 /usr/local/nginx/sbin/nginx -t

(2)加载一下配置文件:

 /usr/local/nginx/sbin/nginx -s reload




测试:

1.mkdir /data/wwwroot/test.com/upload

2.在/upload/目录下创建1.php且写入内容“111”

echo "111" > /data/wwwroot/test.com/upload/1.php 


技术分享图片


访问测试:

(1)访问设置了访问控制的upload目录下的.php结尾的文件则403错误。

curl  -x192.168.136.150:80 test.com/upload/1.php

技术分享图片

(2)访问设置了访问控制的upload目录下不是.php结尾的文件,则成功!

技术分享图片



3.根据user_agent限制(防止cc攻击,“蜘蛛”爬虫)


进入到虚拟主机配置文件 cd /usr/local/nginx/conf/vhost

 编辑虚拟主机配置文件:vim test.com.conf  添加内容:

if ($http_user_agent ~ 'Spider/3.0|YoudaoBot|Tomato')

 //加~* 匹配时不区分大小写 ,

 {

      return 403;

}

 deny all和return 403效果一样



技术分享图片

(针对Spider/3.0|YoudaoBot|Tomato,这种做访问控制)


测试:(curl -A "")


技术分享图片

(严格匹配,区分大小写)

技术分享图片



            Nginx解析php相关配置

技术分享图片

此时我们的test.com还是不能解析php的

技术分享图片

测试

技术分享图片



Nginx解析php步骤:

进入到虚拟主机配置文件 cd /usr/local/nginx/conf/vhost

 编辑虚拟主机配置文件:vim test.com.conf  添加内容:

location ~ \.php$

    {

        include fastcgi_params;

        fastcgi_pass unix:/tmp/php-fcgi.sock;  //如果sock的路径不正确,则会出现502

        fastcgi_index index.php;

        fastcgi_param SCRIPT_FILENAME /data/wwwroot/test.com$fastcgi_script_name;

    }

技术分享图片


修改完配置文件后:

(1)测试配置文件是否正确:

 /usr/local/nginx/sbin/nginx -t

(2)加载一下配置文件:

 /usr/local/nginx/sbin/nginx -s reload



测试:

技术分享图片

解析成功)



如果我们在虚拟主机配置文件中的sock文件出错则解析时会出现502报错

技术分享图片


php-fpm的配置文件中定义.sock文件,及其路径

技术分享图片

虚拟主机中添加解析php 配置内容时两者的sock文件应该一致。


(重启php-fpm服务;/etc.init.d/php-fpm restart)


如果我们的 /usr/local/php-fpm/etc/php-fpm.conf 配置文件中监听的:

不是: listen = /tmp/php-fcgi.sock

而是 :listen = 127.0.0.1:9000 是这种ip+端口

技术分享图片


那么我们在虚拟主机配置文件中解析php配置内容也相应的修改:

技术分享图片



修改完配置文件后:

(1)测试配置文件是否正确:

 /usr/local/nginx/sbin/nginx -t

(2)加载一下配置文件:

 /usr/local/nginx/sbin/nginx -s reload



所以当我们访问出现502报错时,先要检查

(1) /usr/local/php-fpm/etc/php-fpm.conf 配置文件中监听的sock文件

还是监听“ip+端口”


然后再虚拟主机配置文件中解析php配置内容也相应的修改

技术分享图片

两者是否一致


(2)查看虚拟主机配置文件中解析php配置内容

(/usr/local/nginx/conf/vhost/test.com.conf)

 fastcgi_param SCRIPT_FILENAME /data/wwwroot/test.com$fastcgi_script_name;

这个内容的路径是否是虚拟主机访问文件路径

技术分享图片

技术分享图片这两个图中路径一致才行。

3.如果监听sock文件的话,权限要为666

listen mode:666


(502报错,首先要看错误日志)










技术分享图片

以上是关于LNMP 静态文件不记录日志和过期时间Nginx防盗链Nginx访问控制解析php的主要内容,如果未能解决你的问题,请参考以下文章

四十八Nginx访问日志Nginx日志切割静态文件不记录日志和过期时间

12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件不记录日志和过期

12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件不记录日志和过期

Nginx访问日志日志切割静态文件不记录日志和过期时间

nginx访问日志,日志切割,静态文件不记录日志和过期时间

12.10-12.12 Nginx的访问日志,日志切割,静态文件不记录日志和过期时间