nginx 动静分离 防盗链

news2024/11/15 8:26:50

  • 一、动静分离
    • 环境准备
    • 静态资源配置(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/1131476.html

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

相关文章

使用非空断言解决Typescript报错:对象可能为 “null“

现象如下&#xff1a; 解决办法&#xff1a;在报错的属性后面加惊叹号&#xff01;&#xff0c; 也就是非空断言 问题解决&#xff1a;

01.5.Binding

参考JusterZhu视频和文档 <TextBox.Text><Binding Path"GivenName" UpdateSourceTrigger"PropertyChanged" Mode"TwoWay"><Binding.ValidationRules><local:AgeRangeRule></local:AgeRangeRule></Binding.Val…

uni-app医院智能导诊系统源码

随着科技的迅速发展&#xff0c;人工智能已经逐渐渗透到我们生活的各个领域。在医疗行业中&#xff0c;智能导诊系统成为了一个备受关注的应用。本文将详细介绍智能导诊系统的概念、技术原理以及在医疗领域中的应用&#xff0c;分析其优势和未来发展趋势。 智能导诊系统通过人工…

74 应急响应-winlinux分析后门勒索病毒攻击

目录 操作系统(windows&#xff0c;linux)应急响应&#xff1a;常见日志类别及存储&#xff1a;补充资料&#xff1a;病毒分析病毒查杀病毒动态在线病毒扫描网站 演示案例:攻击响应-暴力破解(RDP,SSH)-Win,Linux控制响应-后门木马(Webshell,PC)-Win,Linux危害响应-病毒感染(勒索…

VSCode 设置热更新

热更新&#xff1a;文件保存后页面自动刷新&#xff0c;用于提高开发效率。 1.打开应用商店&#xff0c;搜索 live server &#xff0c;选择第一个&#xff0c;点击安装。 2.随便打开一个 HTML 文件&#xff0c;在文件中右键点击&#xff0c;选择 Open with Live Server 打开网…

Python的pip包管理器介绍和使用

Python的pip包管理器介绍和使用 什么是pip&#xff1f; pip是Python的软件包管理器&#xff0c;它可以方便地安装、升级和卸载Python软件包。它是Python的标准包管理器&#xff0c;自Python 3.4版本开始&#xff0c;已经内置在Python中。 使用pip&#xff0c;你可以轻松地安…

docker安装centos7进入后不显示当前路径的解决记录

本文记录一个小问题(仅此而已)&#xff1a; 最近我的mac使用docker安装了centos&#xff0c;但是每次(使用 docker exec -it f925c71d28ef48e7b66ed93555e30e6c272727eecd5285639b6a66c5231a99b2 /bin/sh)进入到centos时候&#xff0c;都不显示当前路径&#xff0c;只有一个 sh…

小程序设计基本微信小程序的校园生活助手系统

项目介绍 通篇文章的撰写基础是实际的应用需要&#xff0c;然后在架构系统之前全面复习大学所修习的相关知识以及网络提供的技术应用教程&#xff0c;以校园生活助手系统的实际应用需要出发&#xff0c;架构系统来改善现校园生活助手系统工作流程繁琐等问题。不仅如此以操作者…

抖音招聘直播报白:短视频流量红利和精准推送,让招聘更精准

抖音直播招聘报白是通过抖音直播方式展现职位信息&#xff0c;并与求职者进行互动的招聘方式。在抖音平台上&#xff0c;企业或者人力资源公司可以通过直播的形式&#xff0c;将职位以视频直播的方式展现出来。通过抖音直播招聘报白&#xff0c;企业或者人力资源公司可以利用抖…

Python 算法高级篇:贪心算法的原理与应用

Python 算法高级篇&#xff1a;贪心算法的原理与应用 引言 1. 什么是贪心算法&#xff1f;2. 贪心算法的应用2.1 最小生成树- Prim 算法2.2 背包问题2.3 哈夫曼编码 3. 代码示例3.1 会议室安排问题 4. 总结 引言 贪心算法是一种基于启发式的问题解决方法&#xff0c;它通过每一…

众和策略:配债不够10张怎么办?

近年来&#xff0c;跟着金融商场的展开和各类企业的资金需求增加&#xff0c;债券商场规划逐步扩展。债券作为一种重要的信誉工具&#xff0c;为企业融资供应了一个灵敏的渠道。但是&#xff0c;在进行债券发行时&#xff0c;有时候或许会遇到一个问题&#xff0c;那就是配债数…

Games104现代游戏引擎笔记 网络游戏架构基础

挑战1:网络同步 挑战2:是网络的可靠性&#xff0c;包括应对网络的延迟&#xff0c;丢包和掉线 挑战3: 反作弊和安全系统&#xff0c;因为网络游戏的本质是经济系统 挑战4:多样性(不同设备&#xff0c;不同服务器)&#xff0c;在不停服的情况下热更新 挑战5:大量人数时对高并发…

68 买卖股票的最佳时机

买卖股票的最佳时机 题解1 贪心题解2 DP 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。…

[④ADRV902x]: Digital Filter Configuration(发射端)

前言 与接收端相反的&#xff0c;发射端链路filter是对信号做interpolation处理&#xff0c;增加信号采样率。 Transmitter Signal Path INT5&#xff1a;5倍上采&#xff0c;filter系数固定&#xff0c;可以选择采用INT5或者THB3和THB2的组合。Transmit Half-Band 3 Filter …

Spring Boot 配置邮件发送服务

文章归档&#xff1a;https://www.yuque.com/u27599042/coding_star/ctwkrus1r9zrytsq spring boot 版本 3.1.3 邮件发送服务使用的 QQ 邮箱提供的 依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent…

Linux CentOS 8(firewalld的配置与管理)

Linux CentOS 8&#xff08;firewalld的配置与管理&#xff09; 目录 一、firewalld 简介二、firewalld 工作概念1、预定义区域&#xff08;管理员可以自定义修改&#xff09;2、预定义服务 三、firewalld 配置方法1、通过firewall-cmd配置2、通过firewall图形界面配置 四、配置…

UUID转16字节数组(Java)

最近在写协议的时候&#xff0c;遇到需要将一个36字符长度的UUID转为长度为16的字节数组&#xff1b; 这样处理的话那我们就需要保证唯一性和可还原&#xff1b; 于是我使用了下面的方式&#xff1a; /*** uuid转16字节数组** param uuidStr* return*/private static byte[] …

国产服务器安装onlyoffice详细教程

1.通过docker安装onlyoffice 找一台能访问互联网的服务器下载onlyoffice镜像 sudo docker pull onlyoffice/documentserver查看镜像 docker images 启动onlyoffice docker run -itd \ --name onlyoffice1 \ --restart always \ -p 8099:80 \ -v /data/docker/onlyoffice/lo…

浅谈食品加工厂能耗情况分析平台解决方案

叶根胜 安科瑞电气股份有限公司 上海嘉定 201801 摘要&#xff1a;本文对某小型食品加工厂能源消耗进行了评价&#xff0c;分析了该工厂节能减排的潜力空间。有关节能减排效率的因素包括工厂的技术水准、管理方法和发展规模。依据研究提出对节能减排制度建设等方面的创新建议…

SpringCloud Alibaba【一】简单介绍

SpringCloud 提起微服务&#xff0c;不得不提 Spring Cloud 全家桶系列&#xff0c;Spring Cloud 是一个服务治理平台&#xff0c;是若干个框架的集合&#xff0c;提供了全套的分布式系统解决方案。包含了&#xff1a;服务注册与发现、配置中心、服务网关、智能路由、负载均衡…