hugo-teek is loading...

如何防护nginx图床

最后更新于:

如何防护nginx图床

警告

以下内容仅供参考!

自己利用网站服务器的nginx的某个目录/images来作为md图床使用,如何防止别人利用爬虫程序来爬取我网站图床里/images下的所有图片呢?

gpt内容:

防止爬虫爬取网站/images目录下的图片,你可以采取以下几种措施来保护你的Nginx服务器上的图床:

  1. 修改 robots.txt 文件

    • 在你的网站根目录下创建或修改 robots.txt 文件,使用 Disallow 语句来告诉遵守规则的爬虫不要爬取 /images 目录。
    1User-agent: *
    2Disallow: /images/
    

    但是请注意,不是所有的爬虫都会遵守 robots.txt 的规则,恶意爬虫通常会忽视这个文件。

    但是,在哪里创建呢?

  2. 使用 HTTP 基本认证

    • 通过在Nginx中配置HTTP基本认证,要求用户输入用户名和密码才能访问 /images 目录。
    1location /images/ {
    2    auth_basic "Restricted Access";
    3    auth_basic_user_file /path/to/htpasswd;
    4}
    

    这个方法可以有效防止未授权的用户访问图片,但如果密码泄露或被破解,仍然存在风险。

  3. 限制IP访问

    • 如果你的图床仅供特定用户或系统使用,你可以通过设置允许列表来限制只有特定的IP能够访问 /images 目录。
    1location /images/ {
    2    allow 192.168.1.1; # 允许的IP地址
    3    deny all; # 拒绝其他所有请求
    4}
    
  4. 限制 Referer

    • 通过检查 HTTP Referer 头来限制图片只能由你网站上的页面引用。
    1location ~* \.(gif|png|jpe?g)$ {
    2    valid_referers none blocked yourdomain.com *.yourdomain.com;
    3    if ($invalid_referer) {
    4        return 403;
    5    }
    6}
    

    这个方法可以一定程度上阻止图片被其他网站直接引用,但 Referer 头可以被伪造,因此并不是完全可靠的。

  5. 使用防爬虫规则

    • 通过设置一些防爬虫的规则来阻止爬虫。例如,使用 limit_req_modulelimit_conn_module 来限制每个IP的访问频率和连接数。
     1http {
     2    limit_req_zone $binary_remote_addr zone=images:10m rate=5r/m;
     3    limit_conn_zone $binary_remote_addr zone=addr:10m;
     4}
     5
     6server {
     7    location /images/ {
     8        limit_req zone=images burst=10 nodelay;
     9        limit_conn addr 3;
    10    }
    11}
    
  6. 加密图片名称

    • 定期更改 /images 目录的图片文件名,并使用不容易被预测的命名模式。这样即使有人访问到了一部分图片,但在你更新命名后他们的链接也会失效。
  7. 设置CORS策略

    • 如果你想防止图片被其他网站直接引用,你可以通过设置CORS策略来实现。
    1location /images/ {
    2    if ($http_referer !~* ^(https?://)(www\.)?yourdomain\.com) {
    3        add_header 'Access-Control-Allow-Origin' 'yourdomain.com';
    4    }
    5}
    

请记住,没有一种方法是万能的,可能需要结合使用多种策略来有效保护你的服务器。另外,确保对服务器进行定期的安全检查和维护,以便及时发现并处理安全漏洞。

推荐使用微信支付
微信支付二维码
推荐使用支付宝
支付宝二维码
最新文章

文档导航