Nginx で直リンク拒否ドメインを指定


画像の直リンクをNginx
で拒否したいと思います。valid_refererを使った自ドメイン以外のリファラーを拒否する方法のチュートリアルは結構ありますが、指定ドメインで直リンクを拒否する方法がわかりません。invalid_refererというもので同様のことができるのでしょうか。

[code]

    location ~ .(gif|png|jpe?g)$ {
         invalid_referer none blocked ~*badsite.com;
         if ($invalid_referer) {
            return   403;
        }
    }
    
[/code]




`$invalid_referer` 変数は `valid_referers` ディレクティブによって設定されるもののようですが、私は
`valid_referers` ディレクティブで否定の正規表現がうまく設定できませんで、代替案としてこんな感じで `map`
を使って実装できそうですがいかがでしょう？

[code]

    map $http_referer $block_by_referer {
        ~^https?://bad.example.com/ 1;
        default 0;
    }
    ...
    location ~ \.(gif|png|jpe?g)$ {
        if ($block_by_referer) {
            return 403;
        }
    }
    
[/code]

