Nginx:仅允许访问与位置名称匹配的引荐来源

时间:2013-09-19 16:44:23

标签: nginx http-referer

在nginx中,有没有办法允许只有具有与当前位置名称匹配的引荐来源的客户端访问“位置”?

这是情景:

http://foooooo.com/bar.org/

http://foooooo.com/zeta.net/

等等

我希望bar.org位置的内容仅在引荐者为bar.org时可用。 zeta.net也是如此

我知道我可以“静态地”执行此操作,但是有很多这些位置,我需要找到一种方法来定义一个“动态”位置。

抱歉我的英语不好。

我已经解决了这个问题:

location ~/([a-zA-Z0-9\.\-]*)/* {
    set $match "$1::$http_referer";
    if ($match !~* ^(.+)::http[s]*://[www]*[.]*\1.*$ ) {
        return 403;
    }
}

2 个答案:

答案 0 :(得分:6)

location ~ ^/([a-zA-Z0-9\.\-]*)/(.*) {
    if ($http_referer !~ "^$1.*$"){
            return 403;
    }
}

答案 1 :(得分:0)

location /india/xxxxx.js {
    if ($http_referer !~ "http://domain.xxx/"){
            return 403;
    }
}

我通过一些小的改动就解决了我的问题,谢谢