nginx配置之nginx中的“防盗”配置

一般我们使用nginx常用的就那么几项,简单代理、反向代理、代理转发、负载均衡、重定向,等等。但是有时候又不得不进行另外的一些配置,下面介绍几种"防盗"配置。

爬虫 User-Agent 过滤

我们通过变量$http_user_agent来实现,变量$http_user_agent可以直接在location中引用。~*表示不区分大小写的正则匹配,其实,大部分爬虫都是Python爬虫,通过python就可以过滤掉80%的Python爬虫。

location / {
  if ($http_user_agent ~* "python|curl|java|wget|httpclient|okhttp") {
      return 503;
  }
  # 正常处理
  # ...
}

屏蔽文件目录

在Nginx中屏蔽文件目录,我们可以使用location指令和deny指令来实现。比如,通常我们会禁止访问版本控制的目录.git和.svn,另外,隐藏文件目录我们也会拒绝访问。

#通用备份和归档文件

location ~* "\.(old|orig|original|php#|php~|php_bak|save|swo|aspx?|tpl|sh|bash|bak?|cfg|cgi|dll|exe|git|hg|ini|jsp|log|mdb|out|sql|svn|swp|tar|rdf)#34; {
    deny all;
}

#拒绝访问 .git 和 .svn 目录

location ~ (.git|.svn) {
    deny all;
}

#拒绝访问隐藏文件和目录

location ~ /\.(?!well-known\/) {
    deny all;
}

图片防盗链

我们通过使用valid_referers指令来定义合法的引荐网址列表,只有这些网址才能正常地获取到图片。如果请求没有提供或者不属于合法的引荐网址,直接返回404或者重定向到某个页面。

location ~* \.(gif|jpg|png|swf|flv)$ {
  root html;

  valid_referers none blocked *.nginx.com;

  if ($invalid_referer) {
    rewrite ^/ www.nginx.cn;
    # return 404;
  }
}

防盗图配置

跟上面一样,我们也是通过使用valid_referers指令来定义合法的引荐网址列表,只有这些网址才能正常地获取到图片。但是,如果请求没有提供或者不属于合法的引荐网址,我们返回一张固定的图片,让它获取不到真正的图片。

location ~ \/public\/(css|js|img)\/.*\.(js|css|gif|jpg|jpeg|png|bmp|swf) {
  valid_referers none blocked *.jslite.io;
  if ($invalid_referer) {
      rewrite ^/  http://wangchujiang.com/piratesp.png;
  }
}

阻止常见攻击

像base64编码的网址、javascript eval()的网址,通常是攻击来源,我们可以阻止它,不让它访问。

#base64编码的网址

location ~* "(base64_encode)(.*)(\()" {
    deny all;
}

#javascript eval() url

location ~* "(eval\()" {
    deny all;
}

使网站不可索引

如果我们不想搜索引擎收录我们的网站,我们可以通过向请求头中添加X-Robots-Tag标签,这个标签会告诉搜索引擎爬虫不要索引网站的任何内容。另外,可以配置我们的网站地图robots.txt返回全部都不允许,这样,搜索引擎爬虫也不会索引我们的网站。

add_header X-Robots-Tag "noindex";

location = /robots.txt {
  return 200 "User-agent: *\nDisallow: /\n";
}

相关文章

Nginx中想对IP做访问限制怎么做?access模块来帮忙-09

在一个请求闯过之前的postread阶段,rewrite阶段,find_config阶段,preaccess阶段后终于来到了Access阶段了。Access阶段主要就是控制请求是否可以继续向下访问的。...

确保 Nginx 网络服务器的安全

在数字时代,网络安全已成为一个亟待解决的问题。随着网络攻击的增加,确保网络服务器安全对保护敏感数据和维护网站完整性至关重要。本博文将指导你如何配置 Nginx(一种流行的开源网络服务器软件),以保护服...

一文搞懂!7种常见的限流方式!

在实际应用中,每个系统或者服务都有其处理能力的极限(瓶颈),即便是微服务中有集群和分布式的夹持,也不能保证系统能应对任何大小的流量,因此,系统为了自保,需要对处理能力范围以外的流量进行“特殊照顾”(比...

从开发到上线:Vite 中资源路径解析与工程化解决方案

在现代前端开发中,Vite 已经成为了一个备受欢迎的构建工具。然而,当涉及到静态资源(如字体、图片等)的路径解析时,开发者常常会遇到一些棘手的问题。特别是在不同的开发和生产环境中,路径解析的行为可能...

nginx upstream节点健康检查

1、前提条件编译nginx时增加nginx_upstream_check_module模板git地址:https://github.com/yaoweibin/nginx_upstream_check...