nginx 动静分离 nginx防盗链

news2024/12/24 11:32:29

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

一、动静分离

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

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

环境准备

静态资源配置(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.231.171 (正版网站)
服务器2IP: 192.168.231.173

在正版网站发布资源

修改配置文件(发布图片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:red;">     #背景为红色
    <img src="http://192.168.231.171/1.jpg"/>    #盗用171IP的1.jpg这个图片
</body>
</html>

浏览器访问盗版网站

在这里插入图片描述

观察正版服务器的日志

在这里插入图片描述

防盗链实验

服务器1IP: 192.168.231.171 (正版网站)
服务器2IP: 192.168.231.173

==[root@nginx-server ~]# vim /etc/nginx/nginx.conf
#日志格式添加" h t t p r e f e r e r " l o g f o r m a t m a i n ′ http_referer" log_format main ' httpreferer"logformatmainremote_addr - r e m o t e u s e r [ remote_user [ remoteuser[time_local] “KaTeX parse error: Double superscript at position 37: … '̲status b o d y b y t e s s e n t " body_bytes_sent " bodybytessent"http_referer” ’
‘“ h t t p u s e r a g e n t " " http_user_agent" " httpuseragent""http_x_forwarded_for”’;
#valid_referers 使用方式
Syntax: valid_referers none | blocked | server_names | string …;
Default: —
Context: server, location

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 server_names  192.168.231.173;   #server_names 只允许指定ip域名来访问资源
 
if ($invalid_referer) {
 return 502;              #其他ip或者域名来访问a服务器,返回502
}
 
}
}

相当于将173这个ip添加到白名单中,只有173可以访问正版服务器的资源

重启服务
nginx -t 
nginx -s reload
[root@localhost ~]# vim /etc/nginx/conf.d/default.conf 
 
server {
    listen  80;
    server_name  localhost;
    location /{
    root  /usr/share/nginx/html;
     index  1.jpg;
valid_referers server_names  www.baidu.com;
if ($invalid_referer) {
 return 502;
}
}
}
 
重启服务
nginx -s reload

只有百度可以访问正版服务器

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【proteus】8086仿真/汇编:创建项目并添加汇编代码文件

1.创建好新项目 2.点击source code 弹出VSM 3. 4.注意两个都不勾选 可以看到schematic有原理图出现 5. 再次点击source code 6.project/project settings&#xff0c;取消勾选embed 7. add 8.输入文件名保存后&#xff1a; 注意&#xff1a;proteus不用写dos的相关语句 。

内存CACHE同步引起OSD时间戳显示异常

目前在用的这款芯片&#xff0c;图像翻转有专门的一个图像处理IP来完成&#xff0c;同时这个IP又支持叠加OSD的功能&#xff0c;但是在设计的时候叠加OSD的功能单元又在图像翻转单元的前面&#xff0c;导致了开启了图像翻转功能后&#xff0c;OSD就倒着显示、位置不在原来的坐标…

vue3 computed 和 watch 的差异

目录 前言 用法 computed watch 代码 理解 高质量的使用 Vue.js作为一种现代化的前端框架&#xff0c;提供了丰富的特性来帮助开发者构建高效和响应式的用户界面。在这其中&#xff0c;computed 和 watch 是两个非常重要的选项&#xff0c;它们都用于处理数据的变化&…

VUE到底有什么好处?

网上有许多前端开发框架的对比&#xff0c;相对的&#xff0c;VUE在综合评分方面还是优秀的。以下是一些State of JavaScript调查数据结果&#xff1a; 使用率&#xff1a;VUE使用者在调研开发者中占比 51%&#xff1b; 开发者满意度&#xff1a;VUE的综合开发者满意度达到64%…

【算法练习Day27】买卖股票的最佳时机 II跳跃游戏跳跃游戏 II

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 买卖股票的最佳时机 II跳跃…

智能视频监控平台EasyCVR接口调用注意事项汇总!

TSINGSEE青犀视频监控汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力&…

汽车4S店如何在数字化管理下,提高市场竞争力

在所有人都认为疫情过后&#xff0c;经济形势会一路向阳&#xff0c;但是&#xff0c;实际情况出乎所有人的意料&#xff0c;各行各业举步维艰。 新闻爆出的各大房地产&#xff0c;恒大的2.4万亿让人瞠目结舌&#xff0c;还有碧桂园和融创&#xff0c;也是债台高筑了&#xff…

Access denied for user ‘root‘@‘localhost‘ (using password:YES) 解决方案(禅道相关)

如果是忘记Mysql密码或更改权限后访问不了的问题请直接跳转以下链接&#xff1a; MySQL登录时出现Access denied for user ‘root‘‘localhost‘ (using password: YES)无法打开的解决方法 关于这个问题&#xff0c;网上查到的解决方法基本都是因为忘记Mysql密码或者用户权限问…

利用Jpom在线构建Spring Boot项目

1 简介 前面介绍了运用Jpom构建部署Vue项目&#xff0c;最近研究了怎么部署Spring Boot项目&#xff0c;至此&#xff0c;一套简单的前后端项目就搞定了。 2 基本步骤 因为就是一个简单的自研测试项目&#xff0c;所以构建没有使用docker容器&#xff0c;直接用java -jar命令…

Go语言入门心法(十三): 反射认知升维

Go语言入门心法(一): 基础语法 Go语言入门心法(二): 结构体 Go语言入门心法(三): 接口 Go语言入门心法(四): 异常体系 Go语言入门心法(五): 函数 Go语言入门心法(六): HTTP面向客户端|服务端编程 Go语言入门心法(七): 并发与通道 Go语言入门心法(八): mysql驱动安装报错o…

图像数据增强算法汇总(Python)

一、数据增强概述 数据增强是一种通过使用已有的训练样本数据来生成更多训练数据的方法&#xff0c;可以应用于解决数据不足的问题。数据增强技术可以用来提高模型的泛化能力&#xff0c;减少过拟合现象。比如在狗猫识别项目中&#xff0c;通过随机旋转、翻转和裁剪等数据增强…

什么是CDN?

目录 1.什么是CDN&#xff1f; 2.CDN工作原理 3.为什么要使用CDN&#xff1f; 4.CDN与传统网站访问的区别 5.CDN的应用场景 6.术语解释 1.什么是CDN&#xff1f; CDN英文全称Content Delivery Network&#xff0c;中文翻译即为内容分发网络。它是建立并覆盖在承载网之上…

【带头学C++】 ----- 1.基础知识 ---- 1.20 Typedef 为已有的类型取别名

1.20 Typedef 为已有的类型取别名 1.typedef语法格式 在 C 中&#xff0c;可以使用 typedef 关键字来为已有的类型创建一个别名。这对于提高代码可读性、简化类型声明以及增加代码的可维护性非常有用。 下面是 typedef 的语法格式&#xff1a; typedef 旧类型名 别名; 2.使…

Unity的碰撞检测

&#xff08;一&#xff09;测试前准备工作 1.创建两个游戏对象&#xff0c;分别取名为”Player”和”Enemy”&#xff0c;并且为名为”Player”的游戏对象设置Tag也为”Player”&#xff0c;二者在场景中如图1所示&#xff1a; 图1 绿为Enemy&#xff0c;红为Player 2.编写脚本…

《Linux从练气到飞升》No.22 Linux 进程间通信

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…

kafka入门03——简单实战

目录 安装Java 安装Zookeeper 安装Kafka 生产与消费 主要是记录下Kafka的安装配置过程&#xff0c;前置条件需要安装jdk和zookeeper。 安装Java 1.Oracle官网下载对应jdk安装包 官网地址&#xff1a;Java Downloads | Oracle 好人分享了下载需要的oracle账号&#xff0c…

linux基本指令(Chapter 2)

linux基本指令(二) 1.date指令 语法:date [option] [format] date命令的作用是显示时间:使用date %Y:%m:%d可以指定格式显示时间.例如:(注意这里的和%之后不要有任何间隔)并且这里是加号,并不是减号 1.在显示方面&#xff0c;使用者可以设定欲显示的格式&#xff0c;格式设…

NeRF综述

文章目录 《Nerf: Neural radiance field in 3d vision, a comprehensive review 》一、数据集&#xff1a;二、基于方法的分类&#xff08;Method-based Taxonomy&#xff09;三、基于应用的分类&#xff08;Application-based Taxonomy&#xff09;四、未来展望 《Nerf: Neur…

盘点网安最好入手的10大岗位,最高月薪30K!

前段时间&#xff0c;知名机构麦可思研究院发布了《2022年中国本科生就业报告》&#xff0c;其中详细列出近五年的本科绿牌专业&#xff0c;信息安全位列第一。 对于网络安全的发展与就业前景已经说过很多&#xff0c;它是收入较高的岗位之一&#xff0c;在转行领域也占据着热…

番外8.1 Task

---------系统中有两个账号&#xff0c;分别是alex与arod&#xff0c;这两个账号除了支持自己的组&#xff0c;还共同支持一个名为project的组。如这两个账号需要共同拥有/srv/ahome/目录的开发权&#xff0c;且该目录不允许其他账号进入查阅&#xff0c;请问该目录的权限应如何…