原文:https://blog.liuzijian.com/post/e2c56cc3-1002-4f41-aec8-9a69f57e3c3f.html

1.防止盗链

要防止特定路径下的图片被盗链,可以在Nginx配置中针对图片文件的请求进行防护。以下是一个示例配置,假设你的图片存放在/img/路径下:

server {
listen 80;
server_name *.liuzijian.com; location /img/ {
valid_referers none blocked *.liuzijian.com;
if ($invalid_referer) {
return 403; # 返回403 Forbidden
} alias /public/img/; }
}

注意:为防止目录穿越,alias使用时,location /img/需要使用/闭合,不可写成location /img,以下同理。

解释:

  • location /img/ 仅针对/img/路径下的请求。
  • valid_referers 指令确保只有来自你的域名的请求可以访问这些图片。

重新加载Nginx配置后,这将有效防止其他网站直接链接到你存放在/img/路径下的图片。

2.允许例外

如果你希望在某个特定图片上允许盗链,可以进行更细粒度的控制。

server {
listen 80;
server_name *.liuzijian.com; # 允许盗链的特定图片
location = /img/logo.jpg {
# 允许所有Referer
add_header Access-Control-Allow-Origin *; alias /img/logo.jpg;
} # 其他图片路径的防盗链设置
location /img/ {
valid_referers none blocked *.liuzijian.com;
if ($invalid_referer) {
return 403; # 返回403 Forbidden
} alias /public/img/; } }

解释:

  • location = /img/logo.jpg 允许对特定图片的访问,无论Referer如何。
  • add_header Access-Control-Allow-Origin *; 可以使该图片支持跨域访问(如果需要)。

这样配置后,只有logo.jpg会被允许盗链,而其他图片则受到保护。请根据需要调整文件路径和配置。

3.阻止某个目录下特定格式图片被访问

    location ~* ^/img/.*\.(jpg|png|gif)$ {
deny all;
}

解释:

这段 Nginx 配置的作用是禁止访问特定路径下的图片文件。具体来说,它禁止了 /img/ 目录下的所有 .jpg、.png 和 .gif 文件的访问。

~*: 这是一个正则表达式匹配操作符,用于进行不区分大小写的正则匹配。~ 表示大小写敏感的正则匹配,而 ~* 表示不区分大小写。

^/img/.*\.(jpg|png|gif)$: 这是匹配请求路径的正则表达式。具体解析如下:

  • ^/img/: 以 /img/ 开头的路径。
  • .*: 匹配零个或多个任意字符(即匹配 /img/ 目录下的所有文件及子目录)。
  • \.(jpg|png|gif): 匹配以 .jpg、.png 或 .gif 结尾的文件名。注意:\. 是转义字符,表示字面上的点号 .。
  • $: 匹配字符串的结尾,确保正则匹配到文件扩展名的结尾。

总结来说,这个正则表达式会匹配所有位于 /img/ 路径下,且扩展名为 .jpg、.png 或 .gif 的文件(不区分大小写)。

deny all;

  • deny all;: 这条指令表示拒绝所有人访问符合上述 location 条件的文件。也就是说,任何请求访问 /img/ 目录下的 .jpg、.png 或 .gif 文件,都会被返回一个 403 Forbidden 错误,禁止访问。

Nginx防盗链设置的更多相关文章

  1. Nginx 防盗链设置

    何谓'盗链' 此内容不在自己服务器上,而通过技术手段,绕过别人放广告有利益的最终页,直接在自己的有广告有利益的页面上向最终用户提供此内容. 常常是一些名不见经传的小网站来盗取一些有实力的大网站的地址( ...

  2. Nginx防盗链、访问控制、解析PHP相关配置及Nginx代理

    6月11日任务 12.13 Nginx防盗链12.14 Nginx访问控制12.15 Nginx解析php相关配置12.16 Nginx代理 扩展502问题汇总 http://ask.apelearn ...

  3. Nginx防盗链配置案例配置,Nginx的知识分享

    防盗链的含义:网站内容不在自己服务器上,而通过技术手段,绕过别人放广告有利益的最终页,直接在自己的有广告有利益的页面上向最终用户提供此内容. 常常是一些名不见经传的小网站来盗取一些有实力的大网站的地址 ...

  4. Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived 实现高可用)

    一.Nginx Rewrite 规则 1. Nginx rewrite规则 Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好, ...

  5. nginx防盗链、nginx访问控制、nginx解析php相关配制、nginx代理

    1.nginx防盗链编辑:vim /usr/local/nginx/conf/vhost/test.com.conf写入: location ~* ^.+\.(gif|jpg|png|swf|flv| ...

  6. nginx防盗链配置

    Ps:防盗链的意义就是保证自己的版权,不免网站的流量流失,为他人做嫁衣.下面是网上看到的三种方法: 修改 /usr/local/nginx/conf/nginx.conf 这个配置文件.找到locat ...

  7. nginx之旅(第二篇):nginx日志管理、nginx防盗链、nginx虚拟主机

    一.nginx日志管理 Nginx访问日志主要有两个参数控制 1) log_format #用来定义记录日志的格式(可以定义多种日志格式,取不不同名字即可) log_format log_name s ...

  8. 使用NGINX+LUA实现WAF功能 和nginx 防盗链

    使用NGINX+LUA实现WAF功能 一.了解WAF 1.1 什么是WAF Web应用防护系统(也称:网站应用级入侵防御系统 .英文:Web Application Firewall,简称: WAF) ...

  9. 六、Nginx 防盗链

    盗链是指一个网站的资源(图片或附件)未经允许在其它网站提供浏览和下载.尤其热门资源的盗链,对网站带宽的消耗非常大,本文通过nginx的配置指令location来实现简单的图片和其它类型文件的防盗链. ...

  10. 什么是防盗链设置中的空Referer

    设置防盗链时候指明和不指明空Referer的差别及实现后的效果? 什么是Referer? 这里的 Referer 指的是HTTP头部的一个字段,也称为HTTP来源地址(HTTP Referer).用来 ...

随机推荐

  1. Python之subprocess 执行报错

    问题 我用subprocess 执行命令查 主机Ip 报错 ​ command = """ "grep {0} /etc/hosts | awk '{print ...

  2. SQL Server如何定期自动备份数据库

    打开SQL Server代理服务 实现自动备份功能,首先要保证SQL Server的"SQL Server(代理)"服务已经打开. 如果没有看到这个"SQL Server ...

  3. 使用expected_conditions的url_changes方法判断是否登录成功

    使用expected_conditions的url_changes方法判断是否跳转页面登录成功 from selenium import webdriver from selenium.webdriv ...

  4. P5524 Ynoi2012 NOIP2015 充满了希望

    P5524 Ynoi2012 NOIP2015 充满了希望 数组开大见祖宗. 思路 不难发现只有询问才会产生贡献,而询问的值来自于距离它最近的且能覆盖这个询问的点的覆盖操作. 可以每个询问操作保存一个 ...

  5. vue-elementui中el-table跨页选择和v-if导致列错乱/选择框无法显示

    在vue-elementui中使用el-table,当type="selection"的时候,分页数据进行不同页跳转选择 需要这种功能的时候我们需要在el-table的标签上为每个 ...

  6. Java基础总结大纲(一)

    1.JVM.JRE.和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性.说明:java是跨平台的而JVM不是跨平台的,正对的不同的语言 ...

  7. Kafka可视化工具之Kafka Tool

    官网: https://www.kafkatool.com/download.html Kafka Tool是一个用于管理和使用Apache Kafka集群的GUI应用程序. Kafka Tool提供 ...

  8. 使用 yum 安装 nginx

    rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm ...

  9. new Date()在ios下的坑

    坑位 最新在开发一个时间轴功能,在使用new Date()的时候发现在IOS下全是NaN. Why new Date("2018-04-27 11:11")在chrome,fire ...

  10. 准备好"干翻世界"之前,不妨先听听我们的意见

    期待大家的到来哦~