Nginx系列-5.配置Nginx的防盗链

Nginx系列-5.配置Nginx的防盗链

目录 - Nginx系列

Nginx系列-1.Linux下安装Nginx
Nginx系列-2.配置LNMP(Linux、Nginx、MySQL、PHP)架构
Nginx系列-3.配置Nginx虚拟主机
Nginx系列-4.Nginx日志配置及日志切割
Nginx系列-5.配置Nginx的防盗链
Nginx系列-6.配置Nginx的HTTPS
Nginx系列-7.配置Nginx使用uwsgi支持web.py框架
Nginx系列-8.配置Nginx+Apache实现动静分离
Nginx系列-9.配置NFS实现Nginx实现动静分离
Nginx系列-10.采用Nginx搭建正向代理服务
Nginx系列-11.配置Nginx反向代理和负载均衡


实验环境
一台最小化的 CentOS 7.3 虚拟机
ip: 192.168.204.133
nginx 版本为 1.12.2

一、配置盗链网站

  1. 启动一台nginx虚拟机,配置两个网站

    vim /etc/nginx/conf.d/vhosts.conf

    添加如下内容

    server {
    listen 80;
    server_name site1.test.com;
    root /var/wwwroot/site1;
    index index.html;
    
    location / {
    }
    }
    server {
    listen 80;
    server_name site2.test.com;
    root /var/wwwroot/site2;
    index index.html;
    
    location / {
    }
    }

    Nginx系列-5.配置Nginx的防盗链

  2. 在宿主机编辑C:\Windows\System32\drivers\etc\hosts文件

    192.168.204.133   site1.test.com
    192.168.204.133   site2.test.com

    Nginx系列-5.配置Nginx的防盗链

  3. 创建网站根目录

    mkdir /var/wwwroot
    cd /var/wwwroot
    mkdir site1
    mkdir site2
    echo -e "<h1>site1</h1><img src='1.jpg'>" >> site1/index.html
    echo -e "<h1>site2</h1><img src='http://site1.test.com/1.jpg'>" >> site2/index.html
  4. 1.jpg上传到/var/wwwroot/site1目录

  5. 启动服务
    启动nginx服务

    systemctl start nginx

    关闭防火墙

    setenforce 0
    systemctl stop firewalld
    systemctl disable firewalld
  6. 在宿主机测试访问
    http://site1.test.com
    Nginx系列-5.配置Nginx的防盗链
    http://site2.test.com
    Nginx系列-5.配置Nginx的防盗链

二、配置site1.test.com防盗链

  1. 编辑nginx配置文件

    server {
    listen 80;
    server_name site1.test.com;
    root /var/wwwroot/site1;
    index index.html;
    location / {
    }
    location ~ \.(jpg|png|gif|jpeg)$ {
        valid_referers site1.test.com;
        if ($invalid_referer) {
            return 403;
        }
    }
    }
    server {
    listen 80;
    server_name site2.test.com;
    root /var/wwwroot/site2;
    index index.html;
    location / {
    }
    }

    Nginx系列-5.配置Nginx的防盗链

  2. 重启nginx服务

    systemctl restart nginx
  3. 在宿主机测试访问
    首先访问site1
    http://site1.test.com
    Nginx系列-5.配置Nginx的防盗链
    清除浏览器缓存后访问site2
    http://site2.test.com
    Nginx系列-5.配置Nginx的防盗链

三、配置防盗链返回其他资源

  1. 编辑nginx配置文件
    增加一个虚拟主机
    对防盗链保护的资源路径进行重写

    server {
    listen 80;
    server_name site1.test.com;
    root /var/wwwroot/site1;
    index index.html;
    location / {
    }
    location ~ \.(jpg|png|gif|jpeg)$ {
        valid_referers site1.test.com;
        if ($invalid_referer) {
            rewrite ^/ http://site3.test.com/notfound.jpg;
            #return 403;
        }
    }
    }
    server {
    listen 80;
    server_name site2.test.com;
    root /var/wwwroot/site2;
    index index.html;
    location / {
    }
    }
    server {
    listen 80;
    server_name site3.test.com;
    root /var/wwwroot/site3;
    index index.html;
    location / {
    }
    }

    Nginx系列-5.配置Nginx的防盗链

  2. 建立site3根目录

    cd /var/wwwroot
    mkdir site3
    echo -e "<h1>site3</h1><img src='notfound.jpg'>" >> site3/index.html
  3. 上传notfound.jpg上传至/var/wwwroot/site3目录

  4. 重启nginx服务

    systemctl restart nginx
  5. 在宿主机编辑C:\Windows\System32\drivers\etc\hosts文件
    增加对site3.test.com的映射

    192.168.204.133   site1.test.com
    192.168.204.133   site2.test.com
    192.168.204.133   site3.test.com

    Nginx系列-5.配置Nginx的防盗链

  6. 在宿主机访问http://site2.test.com
    可以看到,在site2中盗用的site11.jpg文件被重定向到了site3上的notfound.jpg文件
    Nginx系列-5.配置Nginx的防盗链

猜你喜欢

转载自blog.51cto.com/tong707/2126275