一、Nginx的防盗链 在配置文件里面增加以下代码:(/usr/local/nginx/conf/vhost/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 ;
    if ($invalid_referer) {
        return 403;
    }
    access_log off;
}

~* 正则,不区分大小写 ^ 以什么什么开关 expires 7d 过期时间是七天 valid_referers none blocked server_names *.test.com ; 定义白名单域名 return 403; 如果不是白名单,就会返回403代码

测试referer : curl -e "www.baidu.com" -x127.0.0.1:80 test.com -I 如果是白名单的返回200,不是的话返回403

二、Nginx的访问控制

1、 需求:访问/admin/目录的请求,只允许某几个IP访问,配置如下:(/usr/local/nginx/conf/vhost/test.com.conf) 针对面目录的:

 location /admin/
{
    allow 192.168.133.1;
    allow 127.0.0.1;
    deny all;
}

localtion 定义哪个目录

测试: 创建文件目录:mkdir /data/wwwroot/admin echo “test,test”>/data/wwwroot/test.com/admin/1.html -t && -s reload

curl -x127.0.0.1:80 test.com -I 提示200 正常访问 拿随更一个IP主机访问,提示403.

2、匹配正则,增加以下内容: 把能上传的目录禁止解析PHP


location ~ .*(upload|image)/.*\.php$
{
        deny all;
}

禁止解析 upload|image 目录以php结尾的文件

测试: mkdir data/wwwroot/test.com/upload/1.php echo “132323” > /data/wwwroot/test.com/upload/1.php curl -x127.0.0.1:80 test.com/upload/1.php 提示403 取消规则 ,正常访问200

3、根根usr_agent 限制(想做一个隐藏的网站,不让百度、bing等引擎的爬虫爬到数据) if ($http_user_agent ~ 'Spider/3.0|YoudaoBot|Tomato') 匹配相关网站,如果要不分大小写,就直接在 ~ 后面加上*号就行了 { return 403; } deny all和return 403效果一样

referer测试: test

三、Nginx解析php相关配置 在配置文件里面加入:

 location ~ \.php$
    {
        include fastcgi_params;
        fastcgi_pass unix:/tmp/php-fcgi.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /data/wwwroot/test.com$fastcgi_script_name;
    }

在没有reload之前我们可以先试验下: curl -x127.0.0.0:80 test.com/index.php 会直接显示代码,解析不到,我们reload一下,再 curl -x127.0.0.0:80 test.com/index.php 就可以了。 如果我们写错配置行,就会提示502,如果我们遇到502这种问题,就得去看下logs下面的错误日志。去看下php-fpm配置文件监听的路径是什么,看我们有不有写错。 路径地址:/usr/local/php-fpm/etc/php-fpm.conf 如果我们监听的是IP地址,那我们 fastcgi_pass 后面就要跟监听的IP地址跟端口。 也就是说listen 跟fastcgi_pass 要对应。 在PHP5.4以后的版本有个特点,如果你监听是的sock,没有定义listen_mod ,那么这个sock文件权限就变成了440,我们访问网站的时间也就变成了502错误。我们要有可读可写的权限才能访问。还有一种502就是,资源耗尽,那时候就要优化系统了。