nginx hotlink特殊重定向

时间:2013-11-29 20:03:51

标签: redirect nginx hotlinking

首先,对不起我的英语。

我尝试在我的网站上做一些特殊的热链接防止。

例如我有图像

http://s1.example.com/i/img_123.jpg 如果有人在您自己的网站上使用此图像代码,而不是重定向。但如果他直接访问此图片,nginx会重定向到 http://example.com/z/img_123.jpg< - 不是图像,而是带有HTML代码的页面等。

我怎样才能得到它?

2 个答案:

答案 0 :(得分:0)

这应该做的工作:

server {                                                 
  root /var/www;

  index index.htm;
  server_name s1.sitename;

  location ~ \.(jpe?g|png|gif)$ {
    valid_referers blocked example.com;
    if ($invalid_referer) { 
      # returning an htm. You can replace this with an image
      return 403 /error.htm;
    }
  }
}

编辑 - 我的答案的第二个版本

location ~ \.(jpe?g|png|gif)$ {
  valid_referers blocked example.com;
  if ($invalid_referer) {
    return 403 /error.htm;
  }

  # If not invalid. we make a URL rewrite
  rewrite i/(.*) http://www.example.com/z/$1 redirect;

  # this is a suggestion. Enable expire. It's static data, and you should not
  # waste resources serving these files every single time.
  expires 30;

  break;
}

答案 1 :(得分:-1)

我已经回答了我的问题:)

if ($http_referer = '') {
    rewrite i/(.*) http://www.example.com/z/$1 redirect;
    expires off;
    break;
}