この記事は最終更新日より 1 年以上経過しています。
画像やリンクが無効になっている可能性もあるのでご了承下さい。
画像やリンクが無効になっている可能性もあるのでご了承下さい。
はじめに
偶にアクセスログやら怪しい物がないかと眺めることもあるのだが、本当に偶々当ブログのコンテンツに対して直接リンクを張った画像の参照を行っているサイトを見つけた。
余りそう言った事は好きでは無いので対策を行うこととした。
Nginx の設定を追加
次に示す設定を追加する事で直リン対策となる。対策を行うサイトの URL を example.com と慣例的な物で表している。
ただ単に 403 と返すのも良いけど直リンされている画像をすり替えた方が面白いなという遊び心から表示される画像がすり替わるような処理にしてみた。
# Direct link measures.
location ~ /wp-content/uploads/.*\.(jpe?g|png|webp)$ {
valid_referers none server_names ~\.example\.com ~\.google\. ~\.yahoo\. ~\.bing\. ~\.facebook\. ~\.fbcdn\. ~\feedly\.com;
if ( $invalid_referer ) {
return 302 https://example.com/directlinkdeny.png;
}
}
上記設定例では自身でアップロードした wp-content/uploads
以下にある拡張子 jpg, jpeg, png, webp を持つ URL へのアクセス時に Referrer が無い、若しくは server_names 以降の正規表現にマッチした Referrer を持つ場合に Valid (正しい) なアクセスとする。
そうで無い場合は変数 $invalid_referer に 1 がセットされるので、if ブロックの中にある return ディレクティブが発動、任意画像を返す動作をする。
ちなみに Google や Yahoo、Bing や Facebook, fbcdn の記載がある物は画像検索やブログカードまで潰してしまうから除外する意味で書いている。
おわりに
直リンを OK とするか NG とするかは個々のポリシーによるところだろうけど、当ブログではそう言った物はちょっと…… というのもあるし、制御する事もまたサーバー運用上の楽しみ方でもあるので今回は対策を行った。
ブログは記事を書くだけでは無くて、運用込みで楽しむ物だと思ってみたり。
コメント