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

blob.png

进入到虚拟主机配置文件 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;

    }

blob.png

修改完配置文件后:

(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

blob.png

                Nginx防盗链

blob.png

(其实就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;

}

blob.png

修改完配置文件后:

(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

blob.png

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

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

blob.png

            Nginx访问控制(重要)

blob.png

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 先后顺序)

blob.png

事前已经创建了我们的控制访问目录/admin/blob.png

修改完配置文件后:

(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

blob.png

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

blob.png

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

.针对目录做访问

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

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

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

{

        deny all;

}

blob.png

修改完配置文件后:

(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 

blob.png

访问测试:

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

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

blob.png

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

blob.png

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效果一样

blob.png

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

测试:(curl -A "")

blob.png

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

blob.png

            Nginx解析php相关配置

blob.png

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

blob.png

测试

blob.png

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;

    }

blob.png

修改完配置文件后:

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

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

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

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

测试:

blob.png

解析成功)

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

blob.png

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

blob.png

虚拟主机中添加解析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+端口

blob.png

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

blob.png

修改完配置文件后:

(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配置内容也相应的修改

blob.png

两者是否一致

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

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

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

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

blob.png

blob.png这两个图中路径一致才行。

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

listen mode:666

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

spacer.gif