nginx 动静分离 防盗链

  • 一、动静分离
    • 环境准备
    • 静态资源配置(10.36.192.169)
      • 安装nginx
      • 修改配置文件
      • 重启nginx
    • 动态资源配置(192.168.20.135)
      • yum安装php
      • 修改nginx配置文件
      • 重启nginx
    • nginx代理机配置(192.168.20.134)
      • 修改nginx子自配置文件
      • 重启nginx
    • 客户端访问
  • 二、防盗链
    • nginx防止网站资源被盗用模块
    • 如何区分哪些是不正常的用户
    • 盗链实验
      • 在正版网站发布资源
      • 浏览器访问
      • 盗版网站盗用
      • 浏览器访问盗版网站
    • 观察正版服务器的日志
    • 防盗链实验
      • 修改正版网站的子配置文件
      • none字段
      • server_name字段

一、动静分离

实质 :使用正则表达式,匹配过滤,交给不同的服务器

优点 :把动态页面和静态页面分别由不同的服务器来解析,加快解析速度,降低单个服务器的压力

环境准备

静态资源配置(10.36.192.169)

安装nginx

echo '
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true ' > /etc/yum.repos.d/nginx.repo
yum clean all
yum makecache
yum repolist
yum install yum-utils
yum -y install nginx

修改配置文件

vim /etc/nginx/conf.d/default.conf
server {
        listen 80;
        server_name     localhost;

        location ~ \.(html|jpg|png|js|css|gif|bmp|jpeg) {
        root /usr/share/nginx/html;
        }
}

重启nginx

nginx -t
nginx -s reload

动态资源配置(192.168.20.135)

yum安装php

rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install php71w-xsl php71w php71w-ldap php71w-cli php71w-common php71w-devel php71w-gd php71w-pdo php71w-mysql php71w-mbstring php71w-bcmath php71w-mcrypt -y
yum install -y php71w-fpm
systemctl start php-fpm
systemctl enable php-fpm

yum 安装nginx方法如上

修改nginx配置文件

vim /etc/nginx/conf.d/default.conf
server {
        listen      80;
        server_name     localhost;
        location ~ \.php$ {
            root           /usr/local/nginx/html;  #指定网站目录
            fastcgi_pass   127.0.0.1:9000;    #指定访问地址
            fastcgi_index  index.php;		#指定默认文件
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name; #站点根目录,取决于root配置项
            include        fastcgi_params;  #包含nginx常量定义
        		}
        }

重启nginx

nginx -t
nginx -s reload

nginx代理机配置(192.168.20.134)

修改nginx子自配置文件

vim /etc/nginx/conf.d/default.conf
upstream static  {
  server 10.36.192.169   weight=1  max_fails=2  fail_timeout=2s;
}
upstream php {
  server 192.168.20.135   weight=2  max_fails=2  fail_timeout=2s;              
}

server {

   listen       80;
   server_name  localhost;
   location ~ \.php$ {
           proxy_pass http://php;
           proxy_set_header Host $host:$server_port;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
               }
location ~ .*\.(html|gif|jpg|png|bmp|swf|css|js)$ {
           proxy_pass http://static;
           proxy_set_header Host $host:$server_port;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}
}

重启nginx

nginx -t
nginx -s reload

客户端访问

在这里插入图片描述

在这里插入图片描述

当访问静态页面的时候location 匹配到 (html|jpg|png|js|css|gif|bmp|jpeg) 通过转发到静态服务器,静态服务通过location的正则匹配来处理请求。
当访问动态页面时location匹配到 .php 结尾的文件转发到后端php服务处理请求。

二、防盗链

盗链 :两个网站A和B,A网站引用了B网站上的资源,这种行为叫做盗链

防盗链 : 防止A引用B的资源

nginx防止网站资源被盗用模块

ngx_http_referer_module

如何区分哪些是不正常的用户

HTTP Referer是header的一部分,当浏览器向web服务器发送请求时,一般会带上Referer,告诉服务器我从那个页面链接过来,服务器借此可以获得一些信息用于处理,例如防止未经允许的网站盗链图片,文件等.因此HTTP Referer可以是通过程序来伪装生成的,所以通过Reterer信息防盗链并非100%可靠,它能够限制大部分的盗链情况

盗链实验

服务器1IP: 192.168.20.135 (正版网站)
服务器2IP: 192.168.0.12

在正版网站发布资源

修改配置文件(发布图片1.jpg)
[root@localhost ~]# vim /etc/nginx/conf.d/default.conf 
 
server {
    listen  80;
    server_name  localhost;
    location /{
    root  /usr/share/nginx/html; #网站默认发布路径
     index  1.jpg;
    
}
}
重启nginx服务
nginx -t
nginx -s reload

浏览器访问

在这里插入图片描述

盗版网站盗用

修改网站发布页面
[root@daili ~]# cd /usr/share/nginx/html/ #yum安装nginx的默认发布路径
[root@daili html]# vim index.html
<html>
<head>
    <meta charset="utf-8">    
    <title>qf.com</title>
</head>
<body style="background-color:green;">     #背景为绿色
    <img src="http://192.168.20.135/1.jpg"/>    #盗用171IP的1.jpg这个图片
</body>
</html>

浏览器访问盗版网站

在这里插入图片描述

观察正版服务器的日志

在这里插入图片描述

防盗链实验

*服务器1IP: 192.168.20.135 (正版网站)
服务器2IP: 192.168.0.12

在这里插入图片描述

none : 允许没有http_referer的请求访问资源

blocked : 允许不是http://开头的,不带协议的请求访问资源;

server_names : 只允许指定ip/域名来的请求访问资源(白名单)

修改正版网站的子配置文件

vim /etc/nginx/conf.d/default.conf 
 
server {
    listen  80;
    server_name  localhost;
    location /{
    root  /usr/share/nginx/html;
     index  1.jpg;
valid_referers  none  blocked www.baidu.com;   
 
if ($invalid_referer) {
 return 502;             
}
 
}
}

重启服务
nginx -t 
nginx -s reload

开启防盗链
因为我们在服务器上配置了防盗链所以访问做了盗链的ip图片加载不出来,并且状态码也是502在这里插入图片描述

none字段

无none访问正版网站,也就是Referer为空,访问不到正版服务器的资源

server {

   listen       80;
   server_name  localhost;

location / {
        root   /usr/share/nginx/html;
        index  1.jpg;

       valid_referers   blocked   192.168.0.12;
             if ($invalid_referer) {
                  return 502;
              }
       }
}

在这里插入图片描述
有none访问正版网站
在这里插入图片描述
在这里插入图片描述

server_name字段

如果在服务器上将做了盗链的机器ip写入白名单(server_names),这样就可以访问到了,状态码为200

server {

    listen       80;
    server_name  localhost;

location / {
         root   /usr/share/nginx/html;
         index  1.jpg;

        valid_referers  none blocked   192.168.0.12;
              if ($invalid_referer) {
                   return 502;
               }
        }
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/108339.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

红队专题-从零开始VC++C/S远程控制软件RAT-MFC-远控介绍及界面编写

红队专题 招募六边形战士队员[1]远控介绍及界面编写1.远程控制软件演示及教程简要说明主程序可执行程序 服务端生成器主机上线服务端程序 和 服务文件管理CMD进程服务自启动主程序主对话框操作菜单列表框配置信息 多线程操作非模式对话框 2.环境&#xff1a;3.界面编程新建项目…

毅速丨增减材协同制造已逐渐成为趋势

近年来&#xff0c;增材制造3D打印技术的发展非常迅速&#xff0c;被广泛应用于航空航天、汽车、电子、医疗等许多行业。增材制造技术通过逐层增加材料的方式制造出各种复杂形状的零件&#xff0c;具有很高的制造效率和灵活性。 然而&#xff0c;在精密加工领域&#xff0c;增材…

STM32 TIM(四)编码器接口

STM32 TIM&#xff08;四&#xff09;编码器接口 编码器接口简介 Encoder Interface 编码器接口 编码器接口可接收增量&#xff08;正交&#xff09;编码器的信号&#xff0c;根据编码器旋转产生的正交信号脉冲&#xff0c;自动控制CNT自增或自减&#xff0c;从而指示编码器的…

bbr 流相互作用图示

类似 AIMD 收敛图&#xff0c;给出 bbr 的对应图示&#xff1a; bbr 多流相互作用非常复杂&#xff0c;和右下角的 AIMD 相比&#xff0c;毫无美感&#xff0c;但是看一眼左下角的 bbr 单流情况&#xff0c;又过于简陋&#xff0c;而 bbr 的核心就基于这简陋的假设。 浙江温…

力扣每日一题73:矩阵置零

题目描述&#xff1a; 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]]示例 2…

Unable to find GatewayFilterFactory with name TokenRelay

目录 问题分析解决方案参考文档开源项目微服务商城项目前后端分离项目 问题分析 Spring Cloud Gateway 网关作为代理资源服务器&#xff0c;需要将 JWT 传递给下游资源服务器&#xff0c;下面是网关的配置 spring:cloud:gateway:discovery:locator:enabled: true # 启用服务发…

Rabbitmq----分布式场景下的应用

服务异步通信-分布式场景下的应用 如果单机模式忘记也可以看看这个快速回顾rabbitmq,在做学习 消息队列在使用过程中&#xff0c;面临着很多实际问题需要思考&#xff1a; 1.消息可靠性 消息从发送&#xff0c;到消费者接收&#xff0c;会经理多个过程&#xff1a; 其中的每一…

【Qt之QSetting】介绍及使用

概述 QSettings类提供了一种持久的、与平台无关的应用程序设置存储功能。 用户通常期望一个应用能在不同会话中记住其设置&#xff08;窗口大小和位置&#xff0c;选项等&#xff09;。在Windows上&#xff0c;这些信息通常存储在系统注册表中&#xff1b;在macOS和iOS上&…

通过阿里云创建accessKeyId和accessKeySecret

我们想实现服务端向个人发送短信验证码 需要通过accessKeyId和accessKeySecret 这里可以白嫖阿里云的 这里 我们先访问阿里云官网 阿里云地址 进入后搜索并进入短信服务 如果没登录 就 登录一下先 然后在搜索框搜索短信服务 点击进入 因为我也是第一次操作 我们一起点免费开…

《算法通关村—计算器|逆波兰问题解析》

《算法通关村—计算器|逆波兰问题解析》 计算器问题 描述 LeetCode227.给你一个字符串表达式 s &#xff0c;请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。 输入&#xff1a;s "32*2" 输出&#xff1a;7基本思路&#xff1a;理解题目&a…

响应式相册写真摄影网站模板源码

模板信息&#xff1a; 模板编号&#xff1a;28526 模板编码&#xff1a;UTF8 模板颜色&#xff1a;黑白 模板分类&#xff1a;摄像、婚庆、家政、保洁 适合行业&#xff1a;婚纱摄影类企业 模板介绍&#xff1a; 本模板自带eyoucms内核&#xff0c;无需再下载eyou系统&#x…

【SPSS】基于RFM+Kmeans聚类的客户分群分析(文末送书)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

精讲双向链表的销毁

相信大家各位学习双向链表的时候对链表的销毁&#xff0c;都或多或少有些小疑惑&#xff0c;我到底是传一级指针还是传二级指针 木关系&#xff0c;这些都是小意思&#xff0c;今天我将为大家share 一下关于到底如何进行正确传指针 对于链表是销毁其实就是对链表进行一个结点一…

Qt配置OpenCV教程,亲测已试过

详细版可参考&#xff1a;Qt配置OpenCV教程&#xff0c;亲测已试过&#xff08;详细版&#xff09;_qt opencv_-_Matrix_-的博客-CSDN博客 软件准备&#xff1a;QtOpenCVCMake (QtOpenCV安装不说了&#xff0c;CMake的安装&#xff0c;我用的是&#xff1a;可参考博客&#x…

Java集成腾讯云OCR身份证识别接口

一、背景 项目用到身份证识别获取人员信息的功能&#xff0c;于是想到了腾讯云提供这样的API。在整合代码过程都很顺利&#xff0c;利用腾讯云官方SDK很快集成进来。但是在上测试环境部署时有了新的问题&#xff0c;通过Nginx代理后的环境无法访问到目标腾讯云接口&#xff0c;…

云起无垠典型案例入选《2023软件供应链安全洞察》报告

近日&#xff0c;历时6个月&#xff0c;由ISC编制的《2023软件供应链安全洞察》报告&#xff08;以下简称《报告》&#xff09;正式对外发布。《报告》围绕软件供应链安全现状、技术内核、治理指南、落地实践展开&#xff0c;以期为行业从业者提供有价值的信息和洞见&#xff0…

飞利浦双串口51单片机485网关

主要功能将PC端的数据接收下来&#xff0c;分发到不同的设备&#xff0c;也是轮询设备数据读取回来&#xff0c;打包回传到PC端&#xff0c;数据包包头包尾识别&#xff0c;数据校验&#xff0c;接收超时处理&#xff0c;将协议结构化处理&#xff0c;协议的改动不需要改动程序…

Python学习笔记--初始化函数

六、初始化函数 1、什么是初始化函数 初始化函数的意思是&#xff0c;当你创建一个实例的时候&#xff0c;这个函数就会被调用。 比如&#xff1a; 当代码在执行 a ClassA() 的语句时&#xff0c;就自动调用了 __init__(self) 函数。 而这个 __init__(self) 函数就是初始化…

为什么数组的下标是从0开始呢?

我们在许多的编程语言中&#xff0c;大部分的数组下标都是从零开始的&#xff0c;那为什么不是从一开始的呢&#xff1f; 首先我们&#xff0c;先要了解数组相关的定义。 数组&#xff08;Array&#xff09;是一种线性表数据结构。它用一组连续的内存空间&#xff0c;来存储一…

【Linux】虚拟机安装Linux、客户端工具及Linux常用命令(详细教程)

目录 一、导言 1、引言 2、使用场景 二、Linux安装 1、安装 2、网络配置 2.1、查看网络配置 2.2、更改网络配置 三、安装客户端工具 1、介绍 2、安装MobaXterm 3、换源 4、拍照功能 四、常用命令 一、导言 1、引言 Linux是一个开源的操作系统内核&#xff0c;它最…